在Python中执行Firefox命令

时间:2013-11-04 17:53:28

标签: firefox python-2.7 command-line subprocess

我到处都读过子进程模块是使用Python命令行的最佳方法,但是我无法使其工作。我有一个名为Page Saver的firefox扩展,用于保存整个网页的图像。在命令行上,此命令成功保存图像:

firefox -savepng "http://www.google.com"

我已经尝试过这个脚本来自动化这个过程,但没有运气:

import subprocess
subprocess.call(['firefox', '-savepng', 'http://www.google.com'], shell=False)

我收到此错误:

Traceback (most recent call last):
  File "C:/Users/computer_4/Desktop/Scripts/crescentsaver.py", line 2, in <module>
    subprocess.call(['firefox', '-savepng', 'http://www.google.com'], shell=False)
  File "C:\Python27\lib\subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 711, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

我是否错误地使用了子进程? 感谢。

更新 找到了解决方案。这是我正在使用的扩展的一个小细节。必须从Firefox默认保存文件夹运行该脚本才能工作。我还将参数作为字符串而不是列表运行,shell = True:

import subprocess
subprocess.call('firefox -savepng http://www.google.com', shell=True)

由于新用户在发布后八小时内回答自己的问题,我无法回答我自己的问题。

1 个答案:

答案 0 :(得分:1)

subprocess.call()告诉您的错误是它无法在PATH上找到firefox命令。 (这是Windows搜索命令的目录列表。)

所以你有两个选择:

  1. 在脚本中指定Firefox命令的完整路径:这很简单,只需将完整路径放在python代码中即可。
  2. 将包含Firefox命令的目录添加到PATH。这有点复杂,但你可以在Super User
  3. 找到一个不错的教程