Python中的subprocess()参数

4 投票
2 回答
1153 浏览
提问于 2025-04-16 05:31

我在Python中有一个参数,这个参数搞得我的subprocess()命令出问题了。这个参数是:

--server-args="-screen 0, 1280x800x24"


args = [
  'xvfb-run',
  '--server-args="-screen 0, 1280x800x24"',
  '/usr/bin/python',
  '/root/AdamN-python-webkit2png-3ae4322/webkit2png.py',
  '-o',
  filename,
  url,
]

我觉得它把双引号给转义了。有没有什么办法可以解决这个问题呢?

2 个回答

1

这是Python代码,不是命令行指令。

在命令行中,引用符号(引号)会被去掉,以便保留空格。而在Python中,空格是通过其他方式来处理的,所以引号会原封不动地传递下去,成为被调用程序实际看到的一部分参数。

2

虽然你可能在过去两年里已经解决了这个问题,但我今天遇到了同样的问题。解决办法是:

import subprocess
subprocess.check_call(['xvfb-run', '-s', '-screen 0 1024x768x24', 
                       'CutyCapt', 
                       '--url=http://www.google.com/',
                       '--out=google.png'])

或者

import subprocess
subprocess.check_call(['xvfb-run', '--server-args=-screen 0 1024x768x24', 
                       'CutyCapt', 
                       '--url=http://www.google.com/',
                       '--out=google4.png'])

假设你已经安装了xvfb。我这里用的是CutyCapt作为示例应用,它需要一个X framebuffer才能运行(这个程序可以把网页转换成图片,但需要一个X服务器)。

撰写回答