Python runpy.run_module 退出代码

3
通过runpy.run_module()调用模块是否可以获取退出码?
我想将我的 exit_code = subprocess.call('py -m mymodule') 替换为 runpy.run_module('mymodule') 并仍然获得exit_code的值。
其中mymodule是包含一个python脚本__main__.py的目录,该脚本只执行sys.exit(1)
在交互式shell中测试runpy.run_module('mymodule')会关闭该shell。 我找不到任何关于这种行为的文档。对我来说,看起来使用subprocess.callrunpy.run_module的区别是作为程序或函数运行。如果是这种情况,那么行为就被解释了,并且我可能无法在需要退出代码时使用runpy.run_module。能否有人确认这一点,并在我可以找到它的某些文档链接上?
1个回答

3
今天早上我有了灵感,于是测试了一个解决方案,结果行之有效:
import runpy

try:
    runpy.run_module('mymodule')
except SystemExit as exeption:
    exitcode = exeption.code
else:
    exitcode = 0

问题在于你必须处理模块中抛出的每个异常。在我的示例中,我只处理了SystemExit异常,因为这是我感兴趣的唯一异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接