1

我是 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.

我怎么解决这个问题?

4

5 回答 5

2

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

于 2012-05-02T13:36:11.333 回答
0

如果我\将文件路径中的所有内容更改为/(在字符串srcdst字符串中),它对我有用。是的,我知道你使用的是 Windows,但如果你使用/.

此外,您似乎正在复制到网络驱动器。你复制到同样的问题c:\R&D\吗?

您使用的是什么风格的 Windows?在 XP 上的本地和网络驱动器中shutil.copyfile()使用目录名称、src 和 dst 路径、在本地和网络驱动器中对我来说都很好&——只要我使用/.\

于 2012-05-02T14:04:58.270 回答
0

尝试用“\”转义“\”,此命令必须有效(例如):

 shutil.copyfile("Y:\\R&D\\myfile.txt", "C:\\TMP")
于 2012-05-02T14:18:04.063 回答
0

最简单的解决方案,向 python 表明该字符串是原始的,而不是对其进行转义或以任何方式修改它:

import shutil

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

err=shutil.copyfile(src, dst)
于 2012-05-02T15:21:23.877 回答
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上。

于 2017-06-15T13:29:58.350 回答