使用python读取unicode文件名

时间:2014-07-16 19:06:02

标签: python python-2.7 unicode utf-8

我有一个带unicode文件名的文件:文件夹“test”中的aγλώσ.txt。我在这个文件夹上做os.walk并尝试打开文件,但是我收到了这个错误

IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\\username\\Documents\\test\\a???s.txt'

以下是我正在使用的代码。

path = r"C:\Users\username\Documents\test"
for rootFile, dirs, files in os.walk(path):
  for filename in files:
    absolutePath = os.path.abspath(rootFile)
    fullFileName = os.path.join(absolutePath, filename)
    with open(fullFileName , 'rb') as f:
       #do something

我也尝试过使用rootFile, dirs, files in os.walk(path.encode('utf-8'))

更新

我尝试了rootFile, dirs, files in os.walk(unicode(path, 'utf-8')):,在打开文件之前我做了fullFileName = fullFileName .encode('utf-8') 这给了我以下错误

IOError: [Errno 2] No such file or directory: 'C:\\Users\\username\\Documents\\test\\a\xc3\x8e\xc2\xb3\xc3\x8e\xc2\xbb\xc3\x8f\xc5\xbd\xc3\x8f\xc6\x92.txt'

实际文件名是γλώσ.txt

1 个答案:

答案 0 :(得分:0)

删除您添加的fullFileName = fullFileName .encode('utf-8')行。 Windows文件API不了解UTF-8,它们使​​用UTF-16或依赖于语言环境的多字节编码。