2017-02-09 69 views
2

是否可以从通过runpy.run_module()调用的模块获取退出代码?python 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')在交互shell目录关闭该壳。我找不到有关此行为的任何文档。对我来说,看起来使用subprocess.callrunpy.run_module之间的区别是将它作为程序或函数运行。如果是这种情况,则解释行为,如果我需要退出代码,则不太可能使用runpy.run_module。 任何人都可以证实这一点,可能与我可以找到它的一些文件的链接。

回答

2

今天早上打我,所以我测试的解决方案,它的工作:

import runpy 

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

美中不足的是,你必须处理模块中的每一个抛出异常。我只处理SystemExit例外情况,因为这是我唯一感兴趣的例外。