Сбой команды Popen с кодом возврата 1

1

Странно, когда django вызывает приведенный ниже код, Popen возвращает returncode=1 с пустым err. Но когда я запускаю эту программу вручную, она работает нормально. Я не знаю, как отлаживать, поскольку err пуста. Это мой код (docsplit преобразование pptx в pdf):

from subprocess import Popen, PIPE

def execute_commands(commands):
    for command in commands:
        # I know the consequences of shell=True
        process = Popen(command, shell=True, stdout=PIPE, stderr=PIPE)
        try:
            out, err = process.communicate()
            errcode = process.returncode
        except (KeyboardInterrupt, SystemExit):
            process.terminate()
            process.wait()
            raise

        if errcode != 0:
            raise Exception('ErrorCode %s: %s' % (str(errcode), err))

if __name__ == '__main__':
    commands = ["/usr/bin/docsplit pdf --output %s %s" % ('test.pdf', 'test.pptx')]
    execute_commands(commands)

Моя среда:

  • Python 2.7.3
  • Django 1.4.4
  • Ubuntu 12.04
Теги:

1 ответ

0

Команда "отлично работает" из командной строки, но вы действительно проверили, что она возвращает успех? Возможно, это не так. Что такое echo $? скажем, после того, как вы его выполнили вручную?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню