python runpy.run_module退出代码

时间:2017-02-09 16:10:05

标签: python subprocess exit runpy

是否可以从通过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 个答案:

答案 0 :(得分:2)

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

import runpy

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

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