2016-04-27 5 views
1

У меня есть файл SVG с 56 объектами, которые я хочу экспортировать в виде отдельных файлов PNG. Я могу сделать это с помощью модуля подпроцесса, но он включает в себя выполнение Inkscape 56 раз, и я ищу лучший способ. Inkscape имеет интерфейс командной строки с режимом оболочки, и я был в состоянии экспортировать предметы, используя оболочку, но когда я пытаюсь сделать это с помощью модуля подпроцесса, независимо от команды я выдаю слишком долго:Как взаимодействовать с интерактивным подпроцессом

import subprocess as sp 

proc =sp.Popen('inkscape -z --shell'.split(), stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE, universal_newlines=True) 
x=proc.communicate('--help') 
print(x) 

("Inkscape 0.91 r13725 interactive shell mode. Type 'quit' to quit.\n>ERROR: Command line too long\n", '') 

Что я делаю не так?

+0

Вы предоставляете команду достаточно долго, чтобы inkscape вырвала ошибку. Вы можете просмотреть документы или просто проб и ошибок и выяснить, сколько времени потребуется. –

ответ

2

Ошибка inkscape является недостоверной. Проблема в том, что отсутствует \n.

proc.communicate('--help\n') 
+0

Спасибо. Оставайтесь с нами, чтобы узнать больше. – saulspatz