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

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

问题描述:

当列出磁盘的所有文件:编码问题打印磁盘的所有文件时

import os 
for path, subdirs, files in os.walk('d:\\'): 
    for name in files: 
     fname = os.path.join(path, name) 
     print 'hello %s' % fname 

我得到:

[Decode error - output not utf-8]

类似的代码,我有时会:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 60: ordinal not in range(128)

如何解决这个问题?


注:我使用Python 2.7版与Windows 7我已经在SO有关UTF-8编码读取许多问题,并试图像各种各样的事情:

print name.encode('utf-8') # or utf8 
print name.decode('utf-8') 
print name.decode().encode(...) 

当然我的.py文件中有# -*- coding: utf-8 -*-

+0

有可能不属于UTF-8编码字符串显示目录或文件的路径,所以当你试图将它们打印蟒蛇不知道如何来解码。我认为这与你的.py文件的编码没有任何关系。 – Billy

解决了:

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