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

IOError using shutil.copyfile() on Windows

我已经尝试制作我的第一个 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'

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

Copy the contents (no metadata) of the file named src to a file named dst. dst must be the complete target file name; look at shutil.copy() for a copy that accepts a target directory path.

使用 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")