subprocess.CalledProcessError 当 运行 robocopy 从 Python 3 到 Windows 7

subprocess.CalledProcessError When running robocopy from Python 3 on Windows 7

我正在尝试使用 robocopy 和 python 将媒体从一台 windows 机器自动复制到网络上的另一台机器 3.

我几乎尝试了 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

有人有什么建议吗?

您要么不拆分参数(并使用 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']))