2010-10-14 39 views
4

我在Python中有一个参数,它使用了我的subprocess()命令。这个论点是: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, 
] 

我认为这是逃避双引号。有没有解决这个问题的方法?

+1

它看起来不像是在向我转义双引号。 – nmichaels 2010-10-14 22:38:19

+0

这应该是列表中两个不同的元素,“-o”和“filename”是不同的。 – SilentGhost 2010-10-14 22:59:49

+0

ARGS = [ 'xvfb的运转', '--server-ARGS =', ' “-screen = 0,1280x800x24”', '的/ usr /斌/蟒', “/根/ AdamN- python-webkit2png-3ae4322/webkit2png.py', '-o', filename, 'http://www.google.com', ] /usr/bin/xvfb-run:line 173:“ - screen = 0,1280x800x24“:command not found – atomical 2010-10-15 00:37:27

回答

1

这是Python代码,而不是shell命令行。

shell命令行吃掉引号以保留空格 - 在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帧缓冲区(它是一个将webkit页面转换为图像并需要X服务器的程序)。