2014-02-15 91 views
1

奇怪的是,當Django調用下面的代碼Popen返回returncode=1與空err。但是當我手動運行這個程序時,它工作正常。我不知道如何調試,因爲err是空的。這是我的代碼(docsplit PPTX格式轉換爲PDF):Popen命令失敗返回碼1

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

回答

0

從命令行執行的命令「正常工作」,但是您是否確實檢查過它是否會返回成功?它可能不會。 echo $?在手動執行後會說什麼?

相關問題