我是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
收到“无效路径”错误消息。
我该如何解决这个问题?
答案 0 :(得分:2)
我怀疑大多数平台都支持&符号。您可能需要调用特定于Windows的程序。我建议使用robocopy,因为它非常擅长复制文件。如果它不包含在您的Windows版本中,您可以在2003年的Windows服务器管理员工具包中找到它。
答案 1 :(得分:0)
如果我将文件路径中的所有\
更改为/
(src
和dst
字符串),则对我有用。是的,我知道你正在使用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上运行:
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。