从python控制台可以看到:
convert -quality 100 in.pdf out.png
但是当我将这个命令添加到我的Python脚本时:
Popen(['convert', '-quality 100', 'in.pdf', 'out.png'])
我明白了:
unrecognized option `-quality 100'
如果我将该参数更改为'-quality=100'
,我仍会收到错误。
我试着像这样修理它:
Popen(['convert', '-quality', '100', 'in.pdf', 'out.png'])
运行但无法生成out.png
。
更新:最后一个版本正常运行。我原本一定输入错误。
答案 0 :(得分:4)
每个参数都有自己的列表元素,因此第二个变量是正确的。
你应该记住,在调用communicate
之前,命令仍然可以运行(尽管在你的情况下这不太可能)。在致电沟通后检查returncode
以查明程序是否遇到任何错误(如格式错误的PDF文件等)。
此外,imagemagick转换将多页PDF写入多个PNG文件(out-0.png
,out-1.png
)。检查是否存在。使用-append
来压制这种行为。
import subprocess
Popen = subprocess.Popen
s = Popen(['convert', '-quality', '100', 'in.pdf', '-append', 'out.png'])
s.communicate()
if s.returncode != 0:
raise OSError('convert error')
答案 1 :(得分:2)
这很好用:
#! /usr/bin/python3.2
from subprocess import Popen
Popen ( ['convert', '-quality', '100', 'test.pdf', 'out.png'] )
使用
Version: ImageMagick 6.6.2-6 2011-03-16 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC
Features: OpenMP
你确定脚本可以找到你的in.pdf吗?
答案 2 :(得分:1)
脚本运行时,必须在执行路径中找到convert
命令。你能在参数中包含convert
的完整路径吗?
Popen(['/path/to/convert', '-quality', '100', 'in.pdf', 'out.png'])
将'/ path / to / convert'替换为真实路径。此外,您需要确保执行脚本的帐户在当前目录中具有读写权限。