Python process.call() error



我有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 的完整路径。

相关内容

最新更新