subprocess.CalledProcessError在Windows 7上从Python 3运行robocopy时

时间:2015-09-28 21:18:32

标签: python subprocess robocopy

我正在尝试使用robocopy和python 3在网络上将媒体从一台Windows机器机器人复制到另一台机器。

我已尝试过subprocessrobocopy的所有组合,但我仍然遇到错误。

这是我最近的尝试:

print(subprocess.check_output(["robocopy", "\\172.21.81.23\c\media\\ \\172.21.81.10\c\media\videos\\"], shell=True))

我不确定它是反斜杠,还是什么,但我总是得到以下回复:

Traceback (most recent call last):
  File "",line 7, in tableChange
  File "C:\Program Files  line 586, in check_output
    raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['robocopy', '\\172.21.81.23\\c\\media\\cmsupload\\ \\172.21.81.10\\c\\media\\videos\\']' returned non-zero exit status 16

有人有任何建议吗?

1 个答案:

答案 0 :(得分:1)

您要么不拆分参数(并使用shell=True)或将它们完全拆分(并且不使用shell=True),则不能仅从参数中拆分命令。此外,对于Windows路径,您希望使用原始字符串以避免偶然在路径中处理ASCII转义的问题(以r为前缀,例如r'\\foo\bar',并且不包括尾部斜杠或事情变得很奇怪)所以你可能会这样做:

print(subprocess.check_output(['robocopy', r'\\172.21.81.23\c\media', r'\\172.21.81.10\c\media\videos']))