当目录名中有空格时如何使用copyfile?

时间:2012-02-29 14:18:31

标签: python windows file-copying

我正在尝试在Windows下执行简单的文件复制任务,但我遇到了一些问题。

我的第一次尝试是使用

import shutils

source = 'C:\Documents and Settings\Some directory\My file.txt'
destination = 'C:\Documents and Settings\Some other directory\Copy.txt'

shutil.copyfile(source, destination)

copyfile无法找到来源和/或无法创建目的地。

我的第二个猜测是使用

shutil.copyfile('"' + source + '"', '"' + destination + '"')

但它又失败了。

任何提示?


修改

结果代码是

IOError: [Errno 22] Invalid argument: '"C:\Documents and Settings\Some directory\My file.txt"'

3 个答案:

答案 0 :(得分:11)

我不认为空间是罪魁祸首。你必须在路径中转义反斜杠,如下所示:

source = 'C:\\Documents and Settings\\Some directory\\My file.txt'

或者更好的是,使用r前缀:

source = r'C:\Documents and Settings\Some directory\My file.txt'

答案 1 :(得分:3)

Copyfile处理空间文件名。

您没有正确转义文件路径中的\。

import shutils

source = 'C:\\Documents and Settings\\Some directory\\My file.txt'
destination = 'C:\\Documents and Settings\\Some other directory\\Copy.txt'

shutil.copyfile(source, destination)

为了说明,请尝试运行:

print 'Incorrect: C:\Test\Derp.txt'
print 'Correct  : C:\\Test\\Derp.txt'

似乎还有其他问题。 Errno 22表示另一个问题。我在以下场景中看到过这个错误:

  • 另一个进程正在使用源文件或目标文件。
  • 文件路径包含精美的Unicode字符。
  • 其他访问问题。

答案 2 :(得分:3)

使用正斜杠或r'raw字符串'。