subprocess.run "No closing quotation" 的格式化字符串
Formatting String for subprocess.run "No closing quotation"
我有这个命令 运行:
'xcopy /e "%s" "%s"'%(executablesPath + "\*", sourcePath+"\Executables\")
格式为:
xcopy /e "I:\Storage$\tools\Executables\*" "C:\Win10x64-1903\Executables\"
和运行内:
subprocess.run(shlex.split(command))
导致错误的原因 ValueError: No closing quotation
?
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"))
我有这个命令 运行:
'xcopy /e "%s" "%s"'%(executablesPath + "\*", sourcePath+"\Executables\")
格式为:
xcopy /e "I:\Storage$\tools\Executables\*" "C:\Win10x64-1903\Executables\"
和运行内:
subprocess.run(shlex.split(command))
导致错误的原因 ValueError: No closing quotation
?
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"))