复制带有Unicode名称的文件
这本来应该是个简单的脚本
import shutil
files = os.listdir("C:\\")
for efile in files:
shutil.copy(efile, "D:\\")
它运行得很好,直到我在一个文件名包含Unicode字符的电脑上试了一下!当我用os.listdir获取文件列表时,Python把这些字符都变成了问号“????”,然后在复制文件的时候就出现了“找不到文件”的错误!!
1 个回答
3
你需要使用Unicode来访问那些不在你所使用的Windows系统的ANSI编码页面中的文件名。为了做到这一点,确保你给文件夹命名时使用Unicode:
import shutil
files = os.listdir(u"C:\\")
for efile in files:
shutil.copy(efile, u"D:\\")
把一个Unicode字符串传给os.listdir
,这样它返回的结果就是Unicode字符串,而不是编码后的内容。
别忘了,os.listdir
不会包含路径,所以你可能实际上想要的是这样的:
shutil.copy(u"C:\\" + efile, u"D:\\")
另外,你可以查看这个链接了解更多信息:http://docs.python.org/howto/unicode.html#unicode-filenames。