是否有可能从通过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.call和runpy.run_module的区别在于将其作为程序或函数运行。如果是这样,则解释行为,如果需要退出代码,则不太可能使用runpy.run_module。有人能证实这一点吗,可能是通过链接到我可以找到的一些文档。
发布于 2017-02-21 08:53:45
今天早上它击中了我,所以我测试了一个解决方案,它起了作用:
import runpy
try:
runpy.run_module('mymodule')
except SystemExit as exeption:
exitcode = exeption.code
else:
exitcode = 0问题是,您必须处理模块中抛出的每个异常。在我的示例中,我只处理SystemExit异常,因为它是我感兴趣的唯一异常。
https://stackoverflow.com/questions/42141533
复制相似问题