2010-10-14 44 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服務器的程序)。