我正在尝试将这些以下链式命令一次性传递给 子流程 。但是它抛出了错误。
要传递的命令:
"C:\MyScript\run.bat" -I"C:\MyScript" -- "C:\MyScript\MyScript1.pl" "file_name"
其中,file_name是一个保存文件名的变量。
代码:
cmd = '"C:\MyScript\run.bat" -I"C:\MyScript" -- "C:\MyScript\MyScript1.pl"' + " " + filename
subprocess.call(cmd)
错误:
Traceback (most recent call last):
File "c:\Test\WWX_2.py", line 28, in
<module>
subprocess.call(cmd)
File "C:\Python26\lib\subprocess.py", line 444, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python26\lib\subprocess.py", line 595, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 821, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
答案 0 :(得分:2)
使用原始字符串文字来防止\r
被解释为回车符。仅空格参数也作为实际命令行参数传递,但您可能不希望发生这种情况,因此请将其删除。
cmd = [r'C:\MyScript\run.bat', r'-I"C:\MyScript"', '--', r'C:\MyScript\MyScript1.pl', filename]
subprocess.call(cmd)
答案 1 :(得分:0)
你必须逃避路径中的所有反斜杠,即
C:\\whatever\\batch.bat