Python subprocess.call ненулевой статус выхода 1 - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь использовать подпроцесс для вызова функции преобразования 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 Ответ

1 голос
/ 08 июля 2019

Похоже, ваша проблема связана с вашей командой преобразования, а не с вашим питоном.

Удалите аргумент -delete, и он отлично работает без изменений. У меня явно нет ваших входных файлов для проверки, но я думаю, что указанные вами индексы не существуют. При передаче недействительных элементов в -delete конвертирование завершается с 1, поэтому я готов поспорить, что это ваша проблема.

...