我有一个带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
答案 0 :(得分:0)
删除您添加的fullFileName = fullFileName .encode('utf-8')
行。 Windows文件API不了解UTF-8,它们使用UTF-16或依赖于语言环境的多字节编码。