2016-04-27 128 views
1

我有一个带有56个对象的SVG文件,我想将其导出为单独的PNG文件。我可以使用子进程模块来做到这一点,但它涉及执行Inkscape 56次,我正在寻找更好的方法。 Inkscape中有一个shell模式下的命令行界面,我已经能够导出使用shell项目,但是当我尝试与子模块要做到这一点,我发出任何命令太长:如何与交互式子进程进行通信

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