【发布时间】:2009-12-18 15:25:20
【问题描述】:
我编写了一个 python 脚本,它使用子进程调用 robocopy 来同步来自远程主机的日志文件。
像这样:
program = 'Robocopy'
options = ['/S']
args.append(program)
args.append(options)
args.append('\\\\%s\%s' % (hostname, source_path))
args.append(local_path)
proc = subprocess.Popen(args=args, shell=True, stdout=cmd_log, stderr=error_log)
其中 source_path 是远程主机上的路径,local_path 是本地主机上的路径(两个 UNC 路径)。 代码通常在守护进程中运行,每隔几个小时就会启动一次。也可以直接在命令提示符下运行此代码。似乎有时当它在守护进程中运行时,我从 Robocopy 收到错误:
错误代码6:'句柄无效'
但是当我在命令提示符下运行它时,我没有收到任何错误。根据我在网络搜索中的发现,这可能与正在传输的文件上已经打开的文件句柄有关。有没有人有更多关于这个错误的信息以及避免它的方法?
【问题讨论】:
-
我发现在字符串中使用反斜杠时始终使用原始字符串是一种很好的做法。在您的情况下,您正在转义一些反斜杠而不是其他反斜杠。它不应该与您的问题有关,但养成习惯意味着您将来不会花时间试图弄清楚为什么“\\\\server\nameofshare”不起作用......
标签: python subprocess robocopy