奇怪的是,当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)
我的环境是:
答案 0 :(得分:0)
命令行中的命令“工作正常”,但您是否真的检查过它是否正在返回成功?它可能不会。 echo $?
手动执行后会说什么?