Python process.call()错误

Python process.call()错误,python,debugging,subprocess,Python,Debugging,Subprocess,我有OSX,正在Unix shell中运行python脚本 我正在运行一个python代码,它应该可以打开一个应用程序。我一直在用Firefox.app进行测试,并且得到了 Traceback (most recent call last): File "/Users/brennan/Desktop/Coding/Wilix/wilix.py", line 453, in <module> subprocess.call(["open -a "+cp2]) File "/System

我有OSX,正在Unix shell中运行python脚本

我正在运行一个python代码,它应该可以打开一个应用程序。我一直在用Firefox.app进行测试,并且得到了

Traceback (most recent call last):
File "/Users/brennan/Desktop/Coding/Wilix/wilix.py", line 453, in <module>
subprocess.call(["open -a "+cp2])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
其中cp2是用户输入。(本例中为Firefox)

如果我将cd放入程序目录,然后

open -a Firefox
firefox可以很好地打开

如果我将代码更改为

subprocess.call(["open -a Firefox"])

我仍然收到错误消息。

尝试给出firefox应用程序的完整路径

在没有
shell=True或提供命令作为列表的情况下使用subprocess.call是错误的。请看一下文档中的第一个示例:


Firefox的完整路径可能需要,也可能不需要。

您正在将一个Firefox
作为一个参数传递,就像您在shell中运行此命令一样:

$ "open -a Firefox"
您需要拆分项目:

subprocess.call(['open', '-a', 'Firefox'])

您是从Firefox目录运行代码吗?脚本本身不在同一目录中,但在之前的脚本中,它将工作目录更改为Firefox所在的目录。那会有问题吗?子进程调用([“打开”、“-a”、“Firefox”])怎么样?是的,谢谢Roman Susi子进程调用([“打开”、“-a”、cp2])解决了greatThanks的问题!
subprocess.call(['open', '-a', 'Firefox'])