Python 机器人复制错误代码6'';句柄无效';

Python 机器人复制错误代码6'';句柄无效';,python,subprocess,robocopy,Python,Subprocess,Robocopy,我编写了一个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

我编写了一个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:'句柄无效'

但是当我在命令提示符下运行这个命令时,我没有得到任何错误。从我在web搜索中发现的情况来看,这可能与正在传输的文件上已打开的文件句柄有关。是否有人有关于此错误的更多信息以及避免此错误的方法?

谷歌搜索建议您使用“备份模式”的/b选项可能会获得成功


即使这样做不起作用,我还是建议在文件名被复制(或记录)时添加代码以输出文件名,一旦您确定了特定的失败文件,您也很可能意识到问题所在。

我发现在字符串中使用反斜杠时始终使用原始字符串是一种很好的做法。在你的例子中,你正在逃避一些反斜杠,而不是其他的。这不应该与你的问题有关,但养成这种习惯意味着你以后不会花时间去想为什么“\\\\server\nameofshare”不起作用……谢谢!我会试试看,让你知道结果如何。