Python process.call()错误
我有OSX,正在Unix shell中运行python脚本 我正在运行一个python代码,它应该可以打开一个应用程序。我一直在用Firefox.app进行测试,并且得到了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
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'])