我正在尝试使用子流程来调用Image Magick转换函数,但是我一直在遇到错误。当我制作python语句
x = '/usr/local/bin/convert -density 600 /path/to/myFile.pdf -depth 8 -delete 0,1,2,6,9 -strip -background white -alpha off /path/to/myTiff.tiff'
result = subprocess.check_output(x.split())
我得到了错误
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
result = subprocess.check_output(x.split())
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 395, in check_output
**kwargs).stdout
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 487, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command "['/usr/local/bin/convert', '-density', '600', '/path/to/myFile.pdf', '-depth', '8', '-delete', '0,1,2,5,6,9', '-strip', '-background', 'white', '-alpha', 'off', '/path/to/myTiff.tiff']" returned non-zero exit status 1.
但是,如果我添加shell=True
,则不会再出现错误,但是我也不会得到.tiff文件。我想知道为什么在不添加shell=True
的情况下会出错,以及为什么我仍然没有得到所需的.tiff文件。
答案 0 :(得分:1)
您的问题似乎出在您的convert命令上,而不是python。
删除-delete参数,它对我来说可以正常运行而无需修改。我显然没有要检查的输入文件,但我认为您指定的索引不存在。将无效的项目传递给-delete时,convert会退出1,所以我敢打赌这是您的问题。