在Windows上使用shutil.copyfile()的IOError

时间:2016-12-10 14:01:30

标签: python windows shutil

我已经尝试制作我的第一个Python程序,它将从一个文件夹复制所有文件并将它们粘贴到另一个文件夹中:

import shutil
shutil.copyfile("C:\Users\USER\Desktop\MoveFrom\Test.txt",
                "C:\Users\USER\Desktop\MoveTo")

但我一直收到错误消息,无法找出原因:

Traceback (most recent call last):
  File "C:\Users\USER\Desktop\Python\movefiles.py", line 2, in <module>
    shutil.copyfile("C:\Users\USER\Desktop\MoveFrom\Test.txt", "C:\Users\USER\Desktop\MoveTo")
  File "C:\PYTHON27\lib\shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: 'C:\\Users\\USER\\Desktop\\MoveTo'

2 个答案:

答案 0 :(得分:3)

使用shutil.copyfile(),您需要提供完整的目标路径(包括新文件名),而不仅仅是目标目录,就像使用copy命令一样。

另外,请注意,在大多数语言中,反斜杠都是由语言在字符串文字中特别解释的。所以你使用的路径完全无效。您需要在路径中转义反斜杠(通过在每个反斜杠前添加另一个反斜杠),或使用r前缀,这会告诉Python不要特别解释反斜杠。

import shutil
shutil.copyfile(
    r"C:\Users\USER\Desktop\MoveFrom\Test.txt",
    r"C:\Users\USER\Desktop\MoveTo\Test.txt")

答案 1 :(得分:0)

您需要copy()而不是copyfile(),请参阅https://docs.python.org/2/library/shutil.html

  

将名为src的文件的内容(无元数据)复制到名为dst的文件中。 dst必须是完整的目标文件名;查看shutil.copy()以获取接受目标目录路径的副本。