运行带有其他参数的.exe文件

时间:2014-02-25 21:19:47

标签: python

我正在使用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

如何正确执行?感谢。

1 个答案:

答案 0 :(得分:4)

如果要传入数组,请将其设为实际数组 - 每个参数一个参数,以逗号分隔。否则你将需要使用shell=True,它具有调用shell的所有(通常是不希望的)副作用(并且应该只是将命令字符串作为字符串传递,在该用例中没有要求的数组)。

subprocess.call([
  "C:\Program Files (x86)\Test 123\Test.exe",
  "H:\Test Test\file.txt",
  "-f", "doStuff"])

如果您不在字符串之间使用逗号,则它们会合并在一起。