我使用的是适用于Windows的python 2.6。
我使用os.walk读取文件树。文件名中可能包含非7位字符(例如,德语"ae“)。这些内容以Pythons内部字符串表示形式进行编码。
我正在使用Python库函数处理这些文件名,但由于编码错误而失败。
如何将这些文件名转换为正确的(unicode?)python字符串?
我有一个文件"d:\utest\ü.txt“。将路径作为unicode传递不起作用:
>>> list(os.walk('d:\\utest'))
[('d:\\utest', [], ['\xfc.txt'])]
>>> list(os.walk(u'd:\\utest'))
[(u'd:\\utest', [], [u'\xfc.txt'])]
发布于 2009-06-27 06:34:38
如果您将Unicode字符串传递给os.walk()
,您将获得Unicode结果:
>>> list(os.walk(r'C:\example')) # Passing an ASCII string
[('C:\\example', [], ['file.txt'])]
>>>
>>> list(os.walk(ur'C:\example')) # Passing a Unicode string
[(u'C:\\example', [], [u'file.txt'])]
发布于 2011-05-15 15:48:06
我正在寻找Python 3.0+的解决方案。会把它放在这里以防别人需要它。
rootdir = r'D:\COUNTRY\ROADS\'
fs_enc = sys.getfilesystemencoding()
for (root, dirname, filename) in os.walk(rootdir.encode(fs_enc)):
# do your stuff here, but remember that now
# root, dirname, filename are represented as bytearrays
发布于 2015-05-15 15:14:49
os.walk(unicode(root_dir, 'utf-8'))
https://stackoverflow.com/questions/1052225
复制相似问题