Popen命令失败,返回码为1

时间:2014-02-15 00:10:28

标签: python django ubuntu

奇怪的是,当django调用以下代码Popen时,返回returncode=1err。但是当我手动运行这个程序时它工作正常。我不知道如何调试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 :(得分:0)

命令行中的命令“工作正常”,但您是否真的检查过它是否正在返回成功?它可能不会。 echo $?手动执行后会说什么?