subprocess.run的格式字符串“无结束引号”

时间:2019-09-17 18:47:46

标签: python subprocess valueerror shlex

我要运行以下命令:

@objc func fileComplete() {
    print("IT'S DONE!")
}

其格式为:

'xcopy /e "%s" "%s"'%(executablesPath + "\\*", sourcePath+"\\Executables\\")

并在其中运行:

xcopy /e "I:\Storage$\tools\Executables\*" "C:\Win10x64-1903\Executables\"

是什么导致错误subprocess.run(shlex.split(command))

1 个答案:

答案 0 :(得分:0)

shlex.split不喜欢双引号前的最后一个反斜杠。似乎您想转义该引号,因此出现消息。

快速修复:将sourcePath+"\\Executables\\"替换为os.path.join(sourcePath,"Executables")

更好的解决方法:不要只为了再次分割命令行而编写命令行。只需使用参数列表

subprocess.run(["xcopy","/e",os.path.join(executablesPath,"*"),os.path.join(sourcePath,"Executables")])

更好的是,使用shutil.copytree递归复制目录。无需非便携式外部命令。 (未经测试的)内容:

import shutil
shutil.copytree(executablesPath,os.path.join(sourcePath,"Executables"))