2010-11-13 50 views
3

这应该是一个简单的脚本与Unicode名称复制文件

import shutil 

files = os.listdir("C:\\") 
for efile in files: 
    shutil.copy(efile, "D:\\") 

它能正常工作,直到我试图在与Unicode字符命名的文件在PC! python只是将这些字符转换成问号“????”当从os.listdir获取列表时,复制过程引发“文件未找到”异常!

回答

3

您需要使用Unicode访问不在您运行的Windows系统的ACP(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