Python-使用shutil在同一网络中传输文件

Python-使用shutil在同一网络中传输文件,python,shutil,Python,Shutil,我正在同一网络中的两台服务器(Ubuntu和Windows)之间移动一个.txt文件。 以下代码未显示任何错误,但不起作用: def transfer_files_task(): source_path = r"/root/airflow/testdoc" dest_path = f"192.168.xxx.xx\Doc-Share\Logger Output" filename = r"/test.txt"

我正在同一网络中的两台服务器(Ubuntu和Windows)之间移动一个.txt文件。 以下代码未显示任何错误,但不起作用:

def transfer_files_task():

    source_path = r"/root/airflow/testdoc"
    dest_path = f"192.168.xxx.xx\Doc-Share\Logger Output"
    filename = r"/test.txt"
    filenamew = f"\test.txt"
    shutil.copyfile(source_path + filename, dest_path + filenamew)

将您的功能更改为:

导入操作系统、ntpath、posixpath
def传输文件任务():
source_file=posixpath.join(“/”、“根”、“气流”、“testdoc”、“test.txt”)
dest_file=ntpath.join(“192.168.xxx.xx”、“文档共享”、“记录器输出”、“test.txt”)
assert os.path.exists(source\u file),f“{source\u file}不存在”
copyfile(源文件、目标文件)
一个小的解释:让python格式化您的路径,它将使您避免许多错误。如果不这样做,您必须知道字符串是如何工作的,应该转义哪些字符,如何在linux和windows上格式化路径,等等

另外,关于字符串使用
r
f
前缀的旁注:

  • r代表raw,它大致意味着不必转义特殊字符,比如退格。因此,
    r“\tab”=“\\tab”
    print(r“\tab”)
    给出
    \tab
    ,而
    print(“\tab”)
    给出
    ab
  • f代表格式,是py36+中格式化字符串的新方法。其用途如下:
name=“约翰”
打印(f“hello{name}”)
#你好,约翰

最后,您可能想查看以下帖子:

为什么第4行和第6行的字符串前面有
f
?这只是一个测试,我最初尝试使用“r”,但我遇到了一个错误:“没有这样的文件或目录:'/root/aiffair/testdoc\test.txt'”非常好的解决方案,谢谢。现在唯一的问题是我无法访问计算机,因为npath.join不允许在IP地址:\192.168.xx.xx\Doc Share\Logger Output\test之前使用双“\”。txtI正在尝试使用normpath,我会让您知道它不允许的意思是什么?这是有效的:
ntpath.join(“\\\\\”,“192.168.xxx.xx”,“文档共享”,“日志输出”)
-->请参阅关于转义字符串的部分…顺便说一句,这很明显有效:
ntpath.join(r“\\”,“192.168.xxx.xx”,“文档共享”,“日志输出”)
我同意你的看法,它应该有效,但它不再有效:“没有这样的文件或目录:'\\192.168.xxx.xx\\Doc Share\\Logger Output\\test.txt'”