这应该是一个简单的脚本
import shutil
files = os.listdir("C:\\")
for efile in files:
shutil.copy(efile, "D:\\")
它工作正常,直到我在一台名为unicode字符的文件的PC上尝试过! python刚刚将这些字符转换为问号“????”从os.listdir获取列表时,复制过程引发“找不到文件”异常!!
答案 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。