如何使用变量将文件从网络共享复制到本地磁盘?

Bla*_*ell 11 python share network-programming

如果我使用以下行:

shutil.copyfile(r"\\mynetworkshare\myfile.txt","C:\TEMP\myfile.txt")
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,我似乎无法弄清楚如何使用带有网络共享路径的变量,因为我需要'r'(相对?)标志.我想象的最终结果将是:

source_path = "\\mynetworkshare"
dest_path = "C:\TEMP"
file_name = "\\myfile.txt"

shutil.copyfile(r source_path + file_name,dest_path + file_name)
Run Code Online (Sandbox Code Playgroud)

但我对这种方法的不同变化没有运气.

Rud*_*ski 23

r您的第一个代码示例中使用正在字符串"原始"的字符串.在这个例子中,这意味着该字符串会看到反斜杠,而不是试图用他们逃离\\只是\.

要使第二个代码示例正常工作,您将使用r字符串,而不是copyfile命令:

source_path = r"\\mynetworkshare"
dest_path = r"C:\TEMP"
file_name = "\\myfile.txt"

shutil.copyfile(source_path + file_name, dest_path + file_name)
Run Code Online (Sandbox Code Playgroud)

  • 另外,我建议查看`os.path`库.然后你可以用`shutil.copyfile(os.path)替换`file_name ="\\ myfile.txt"`和`file_name ="myfile.txt"`和`shutil.copyfile(source_path + file_name,dest_path + file_name)`. join(source_path,file_name),os.path.join(dest_path,file_name))`,它可以跨平台工作. (6认同)

bal*_*pha 5

r是“原始字符串”,而不是相对的。如果您没有在字符串前加上r,Python 会将反斜杠 " \" 视为转义字符。

因此,当您的字符串包含反斜杠时,您要么必须r在它前面加上一个,要么为您想要出现的每个反斜杠加上两个反斜杠。

>>> r"\\myfile" == "\\\\myfile"
True
Run Code Online (Sandbox Code Playgroud)