如何将文件复制到包含&符号'&'的路径使用Python的shutil?

时间:2012-05-02 13:18:56

标签: python shutil

我是Python的新手,必须修改现有的Python脚本。该脚本将文件复制到其他路径,如下所示:

err=shutil.copyfile(src, dst)

除非dst包含&

等字符,否则此方法有效

dst = "Y:\R&D\myfile.txt"

在这种情况下,我收到了

的Windows错误弹出窗口
Open file or Read file error
Y:\R

我试图逃避&使用反斜杠,双反斜杠和用其他引号包装字符串:dst = "\"Y:\R&D\myfile.txt\""。 在最后一种情况下没有任何作用我从shutil收到“无效路径”错误消息。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

我怀疑大多数平台都支持&符号。您可能需要调用特定于Windows的程序。我建议使用robocopy,因为它非常擅长复制文件。如果它不包含在您的Windows版本中,您可以在2003年的Windows服务器管理员工具包中找到它。

答案 1 :(得分:0)

如果我将文件路径中的所有\更改为/srcdst字符串),则对我有用。是的,我知道你正在使用Windows,但如果使用/,即使在Windows中,文件路径似乎也不那么繁琐。

此外,它看起来像是在复制到网络驱动器。您是否在复制到c:\R&D\时遇到同样的问题?

您使用的是什么样的Windows? shutil.copyfile()适用于&目录名,src和dst路径,XP上的本地和网络驱动器中的/ - 只要我使用\代替{ {1}}。

答案 2 :(得分:0)

尝试使用“\”逃避“\”,此命令必须起作用(例如):

 shutil.copyfile("Y:\\R&D\\myfile.txt", "C:\\TMP")

答案 3 :(得分:0)

最简单的解决方案,表示python该字符串是原始的,不要逃避它或以任何方式修改它:

import shutil

src = r"c:\r&d\file.txt"
dst = r"c:\r&d\file2.txt"

err=shutil.copyfile(src, dst)

答案 4 :(得分:0)

以下几种方法可以让它在Windows上运行:

  • 方法1 :(已经解释过)
      

    import shutil; shutil.copy(src,dest)   

    只要src / dest使用r'c:\r&d\file'字符串格式。它也适用于前进" /"斜线也是。

  • 方法2:注意在Windows上使用双引号而不是单引号。

      

    src = r'c:\r & d\src_file'

         

    os.system('copy "{}" "{}"'.format(src,dest)) 1 file(s) copied

  • 最后的手段:

      

    with open(dest, 'wb') as f: f.write(open(src,'rb').read())

os.system不同,此首选实现subprocess.call无法与Windows上的任何引用方法一起使用。我总是得到The specified path is invalid.没试过unix。