是否可以从通过runpy.run_module()调用的模块获取退出代码?

我想替换我的
exit_code = subprocess.call('py -m mymodule')

runpy.run_module('mymodule')
并且仍然获得exit_code值。

其中mymodule是包含python脚本__main__.py的目录,该脚本仅执行sys.exit(1)

在交互式外壳中测试runpy.run_module('mymodule')会关闭该外壳。我找不到有关该行为的任何文档。在我看来,使用subprocess.callrunpy.run_module之间的区别是将其作为程序或函数运行。如果是这种情况,则说明行为,如果需要退出代码,则不太可能使用runpy.run_module
任何人都可以确认这一点,可能带有指向我可以找到它的一些文档的链接。

最佳答案

今天早上它打击了我,所以我测试了一个解决方案,它起作用了:

import runpy

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


问题是您必须处理模块中引发的每个异常。在我的示例中,我仅处理SystemExit异常,因为它是我感兴趣的唯一异常。

关于python - python runpy.run_module退出代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42141533/

10-13 01:58