列出磁盘的所有文件时:
import os
for path, subdirs, files in os.walk('d:\\'):
for name in files:
fname = os.path.join(path, name)
print 'hello %s' % fname
我明白了:
[解码错误 - 输出不是utf-8]
我有时会得到类似的代码:
UnicodeDecodeError:'ascii'编解码器无法解码位置60的字节0xe9:序数不在范围内(128)
如何解决这个问题?
注意:我在Windows 7中使用Python 2.7。我已经阅读了很多关于UTF-8编码的问题,并尝试了各种各样的事情,例如:
print name.encode('utf-8') # or utf8
print name.decode('utf-8')
print name.decode().encode(...)
我的.py文件当然是# -*- coding: utf-8 -*-
。
答案 0 :(得分:0)
解决:
import os, sys
enc = sys.getfilesystemencoding()
for path, subdirs, files in os.walk('d:\\'):
for name in files:
fname = os.path.join(path, name).decode(enc) # decode the inputs
print fname.encode('utf8') # encode the outputs