2010-10-14 4 views
4

J'ai un argument en Python qui détraque ma commande subprocess(). L'argument est:arguments subprocess() en Python

--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, 
] 

Je pense qu'il échappe aux guillemets doubles. Y a-t-il un travail pour ça?

+1

Il ne semble pas que j'échappe aux doubles guillemets. – nmichaels

+0

cela devrait être deux éléments distincts de la liste, de la même manière '-o' et' filename' sont différents. – SilentGhost

+0

args = [ 'xvfb-run', ' --server-args =', ' "-Screen = 0, 1280x800x24"', '/ usr/bin/python', «/root/AdamN- python-webkit2png-3ae4322/webkit2png.py », '-o', nom de fichier , 'http://www.google.com', ] /usr/bin/xvfb-course: ligne 173: « - screen = 0, 1280x800x24 ": commande non trouvée – atomical

Répondre

1

Ceci est un code Python, pas une ligne de commande shell. Une ligne de commande shell mange les guillemets pour conserver les espaces - en Python, les espaces sont conservés par un moyen différent, de sorte que les guillemets sont transmis tels quels et font partie de l'argument que le programme appelé voit réellement.

2

Alors que vous avez probablement compris cela au cours des deux dernières années, j'ai eu le même problème aujourd'hui. La solution:

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

ou

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

En supposant que vous avez Xvfb installé. J'utilise CutyCapt comme mon exemple d'application qui nécessite un framebuffer X pour fonctionner (c'est un programme qui convertit les pages webkit en images et nécessite un serveur X).

Questions connexes