我有一个脚本,该脚本使用特定文件启动Scribus,并在Scribus内部自动运行Python脚本。
我现在想将更多选项传递给Scribus脚本,但是这样做的时候,我偶然发现os.system()
(我以前使用的)和subprocess.call()
(我想要的)之间有一个奇怪的区别喜欢现在使用,因为通话变得越来越复杂。
原始命令是:
os.system('scribus -g -py /home/ale/src/bin_etc/scribus-a6-to-a4-pdf.py -pa single -- funktionen.sla')
新的是:
file = 'funktionen.sla'
arguments = ['-pa', 'single']
call(['scribus', '-g', '-py', '/home/ale/src/bin_etc/scribus-a6-to-a4-pdf.py'] + arguments + ['--', file])
尽管第一个命令可以正常运行(并且single
命令在 inner 脚本中可以识别),但是在运行新的call()
命令时,Scribus告诉我可以找不到打开的文件。
对我来说,这两个命令看起来相同。有人可以帮忙找出区别吗?
P.S .:作为补充,这是从命令行运行Scribus脚本的文档:
答案 0 :(得分:0)
正如我在对问题的评论中所写的那样,我没有注意到该问题已经具有正确的代码。
问题在于,当您将代码从os.system()
迁移到subprocess.call()
时,如果您有个选项结束(--
),则必须小心您不要在两个破折号之间留下空格:'-- '
由外壳自动修剪(由os.system()
而不是subprocess.call()
运行,它将按原样传递选项,并且最终程序将把它理解为具有您要读取的文件的值的另一个选项(以空格命名)。