python2.7中os.walk阿拉伯字符乱码

下面的代码用来获取path下的文件夹、文件信息:

for root, dirs, files in os.walk(path):

发现有一个文件的文件名中包含阿拉伯字符:

تخصيص اراضيFeb 2015.pdf

但是通过上面代码得到的文件名变成了:

????? ?????Feb 2015.pdf
其他文件(文件名由英文或者中文组成)正常。
 
这个地方涉及到Python2.7文件名称编码的问题,详细的内容可以参考:
https://vladikk.com/2013/06/01/unicode-file-names-in-python/
https://github.com/houtianze/bypy/issues/195
https://cloud.tencent.com/developer/ask/51757
 
具体的针对我的环境,修改为如下代码解决:
for root, dirs, files in os.walk(unicode(path, 'utf-8')):
 这里的unicode(path, 'utf-8')是将utf-8编码下的path转换为unicode编码的对象,对比两种不同情况下files的元素的类型,一个是str,一个是unicode:

E:\temp\1\????? ?????Feb 2015.pdf
<type 'str'>

 

E:\temp\1\تخصيص اراضيFeb 2015.pdf
<type 'unicode'>

posted @ 2020-10-20 12:49  LeoGIS  阅读(264)  评论(0编辑  收藏  举报