Python subprocess.call非零退出状态1

时间:2019-07-07 22:59:57

标签: python subprocess imagemagick-convert

我正在尝试使用子流程来调用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文件。

1 个答案:

答案 0 :(得分:1)

您的问题似乎出在您的convert命令上,而不是python。

删除-delete参数,它对我来说可以正常运行而无需修改。我显然没有要检查的输入文件,但我认为您指定的索引不存在。将无效的项目传递给-delete时,convert会退出1,所以我敢打赌这是您的问题。