当python脚本有未处理的异常时退出代码

peh*_*hrs 8 python exit-code

我需要一个方法来运行python脚本文件,如果脚本失败并带有未处理的异常,python应该以非零退出代码退出.我的第一次尝试是这样的:

import sys
if __name__ == '__main__':
    try:
        import <unknown script>
    except:
        sys.exit(-1)
Run Code Online (Sandbox Code Playgroud)

但由于__main__经常使用的防护,它打破了很多脚本.有关如何正确执行此操作的任何建议?

Tha*_*tos 13

Python已经做了你所要求的:

$ python -c "raise RuntimeError()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
RuntimeError
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

经过OP的一些编辑后,也许你想要:

import subprocess

proc = subprocess.Popen(['/usr/bin/python', 'script-name'])
proc.communicate()
if proc.returncode != 0:
    # Run failure code
else:
    # Run happy code.
Run Code Online (Sandbox Code Playgroud)

如果我在这里感到困惑,请纠正我.