Аргументы subprocess () в Python - PullRequest
       12

Аргументы subprocess () в Python

4 голосов
/ 15 октября 2010

У меня есть аргумент в 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 ]

2 голосов
/ 19 июля 2012

Хотя вы, наверное, поняли это за последние два года, у меня была такая же проблема сегодня.Решение:

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-кадровый буфер (это программа, преобразующая страницы веб-набора в изображения и требующая X-сервера).

1 голос
/ 15 октября 2010

Это код Python, а не командная строка оболочки.

Командная строка оболочки съедает кавычки для сохранения пробелов - в Python пробелы хранятся другими способами, поэтому кавычки передаются как есть и становятся частью аргумента, который фактически вызывает вызываемая программа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...