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'>