простой сценарий subprocess.run завершается неудачно - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь запустить функцию python subprocess.run для выполнения следующей команды:

 pdftoppm -jpeg -f 1 -scale-to 200 data/andromeda.pdf and-page

pdftoppm - является частью утилиты poppler и генерирует изображения из файлов pdf.

Данные файла/andromeda.pdf существует.Данные папки находятся на одном уровне со скриптом Python и / или откуда я запускаю команду.Команда в основном сгенерирует файл JPEG, со страницы 1 (-f 1) шириной 200px (-scale-to) из заданного файла формата and-page-1.jpeg (так называемый ppmtroot).

Длинная историяshort: из командной строки работает как положено, т.е. если я вызываю указанную выше команду либо из zsh, либо из оболочки bash, вручную - она ​​генерирует миниатюру, как и ожидалось.Однако, если я запускаю его из модуля подпроцесса python - он не работает возвращает код ошибки 99!

Ниже приведен код Python (имя файла sc_02_thumbnails.py):

import subprocess
import sys


def main(filename, ppmroot):
    cmd = [
        'pdftoppm',
        '-f 1',
        '-scale-to 200',
        '-jpeg',
        filename,
        ppmroot
    ]
    result = subprocess.run(
        cmd,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE
    )
    if result.returncode:
        print("Failed to generate thumbnail. Return code: {}. stderr: {}".format(
            result.returncode,
            result.stderr
        ))
        print("Used cmd: {}".format(' '.join(cmd)))
        sys.exit(1)
    else:
        print("Success!")         


if __name__ == "__main__":
    if len(sys.argv) > 2:
        filename = sys.argv[1]
        ppmroot = sys.argv[2]
    else:
        print("Usage: {} <pdffile> <ppmroot>".format(sys.argv[0]))
        sys.exit(1)

    main(filename, ppmroot)

И здесь - это репозиторий, включающий также файл data / andromeda.pdf.Я вызываю свой скрипт с помощью as (из zsh):

 $ chmod +x ./sc_02_thumbnauils.py
 $ ./sc_02_thumbnails.py data/andromeda.pdf  and-page

и ... генерация эскизов завершается неудачно!Я попытался выполнить сценарий Python из обеих оболочек zsh и bash :( Что я делаю не так?

1 Ответ

0 голосов
/ 05 декабря 2018

Цитирование неверно, вы должны иметь '-f', '1', и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...