我正在使用windows和struggeling来完成这项工作......
我可以在cmd.exe中执行:
"C:\Program Files (x86)\Test 123\Test.exe" "H:\Test Test\file.txt" -f "doStuff"
但是当我尝试在python中执行它时:
subprocess.call([r'"C:\Program Files (x86)\Test 123\Test.exe" "H:\Test Test\file.txt" -f "doStuff"'])
我收到此错误:
Traceback (most recent call last):
File "testing12.py", line 20, in <module>
subprocess.call([r'"C:\Program Files (x86)\Test 123\Test\Test.exe" "H:\Test Test\Folder\file.txt" -f "doStuff"'])
File "c:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "c:\Python27\lib\subprocess.py", line 709, in __init__
errread, errwrite)
File "c:\Python27\lib\subprocess.py", line 957, in _execute_child
startupinfo)
WindowsError: [Error 5] Access is denied
如何正确执行?感谢。
答案 0 :(得分:4)
如果要传入数组,请将其设为实际数组 - 每个参数一个参数,以逗号分隔。否则你将需要使用shell=True
,它具有调用shell的所有(通常是不希望的)副作用(并且应该只是将命令字符串作为字符串传递,在该用例中没有要求的数组)。
subprocess.call([
"C:\Program Files (x86)\Test 123\Test.exe",
"H:\Test Test\file.txt",
"-f", "doStuff"])
如果您不在字符串之间使用逗号,则它们会合并在一起。