打印磁盘的所有文件时出现编码问题

时间:2016-11-15 12:44:31

标签: python python-2.7 encoding utf-8 character-encoding

列出磁盘的所有文件时:

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

1 个答案:

答案 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