我有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
我的代码是:
subprocess.call(["open -a "+cp2])
其中 cp2 是用户输入。(在这种情况下是火狐浏览器)
如果我 cd 进入程序目录,然后做
open -a Firefox
火狐打开正常。
如果我将代码更改为
subprocess.call(["open -a Firefox"])
我仍然收到错误消息。
你open -a Firefox
作为一个参数传递,就好像你在 shell 中运行这个一样:
$ "open -a Firefox"
您需要拆分项目:
subprocess.call(['open', '-a', 'Firefox'])
尝试提供火狐应用程序的完整路径。
在没有shell=True
的情况下使用 subprocess.call 或提供命令作为列表是错误的。请看一下文档中的第一个示例:
http://docs.python.org/2/library/subprocess.html
可能需要或不需要 Firefox 的完整路径。