CalledProcessError退出状态代码5

时间:2018-07-05 13:15:42

标签: python bash subprocess runtime-error exit-code

我一直在处理执行bash命令的简短python脚本。该程序工作了大约一个月。最近,我尝试运行通过此命令传递的脚本:

my_launcher.py -c /path/to/config/file.json

(顺便说一句,顺便说一句,当在终端中输入命令时,我没有引起任何错误并且运行正常),并且得到了以下消息:

RuntimeError: Command '['bash', '-c', 'my_launcher.py -c /path/to/config/file.json']' returns non-zero exit status (code5)

在Google上浏览后,我发现了返回代码0、1和2的定义,但是没有发现代码5的定义。这是什么意思?如何解决?等等

这是导致错误的python代码:

try :
    #check_output produces byte string
    #raises exception if command returns a non-zero exit status (error occurs during processing of command)
    string_of_text_rc = subprocess.check_output(['bash', '-c', bashCommand])
except subprocess.CalledProcessError as e: 
    raise RuntimeError("Command '{}' returns non-zero exit status (code{})".format(e.cmd, e.returncode))

删除try/except时,会收到以下提示:

Traceback (most recent call last):
  File "bash_cmd.py", line 27, in <module>
    run_cmd('my_launcher.py -c /path/to/config/file.json')
  File "bash_cmd.py", line 17, in run_cmd
    string_of_text_rc = subprocess.check_output(['bash', '-c', bashCommand])
  File "/usr/lib64/python2.7/subprocess.py", line 575, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['bash', '-c', 'my_launcher.py -c /path/to/config/file.json']' returned non-zero exit status 5

**编辑:正确的输出包含在e.output中。这意味着该命令已运行并返回正确的输出。我真的不知道为什么会收到此错误代码。

1 个答案:

答案 0 :(得分:1)

作为记录,这是您应运行.py文件的方式:

result = subprocess.check_output([
    sys.executable, 'my_launcher.py', '-c', path_to_json])

这是运行shell命令的方式:

result = subprocess.check_output(bash_command, shell=True)

针对您的问题-您可以从代码中删除try/except,以便我们看到完整的错误回溯吗?一些好的信息可能会隐藏在其中。