使用unicode名称复制文件

时间:2010-11-13 16:26:04

标签: python

这应该是一个简单的脚本

import shutil

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

它工作正常,直到我在一台名为unicode字符的文件的PC上尝试过! python刚刚将这些字符转换为问号“????”从os.listdir获取列表时,复制过程引发“找不到文件”异常!!

1 个答案:

答案 0 :(得分: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