2

是否可以从通过 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 中进行测试会关闭该 shell。我找不到有关该行为的任何文档。在我看来,使用subprocess.callrunpy.run_module作为程序或函数运行它之间的区别。如果是这种情况,那么就会解释行为,runpy.run_module如果我需要退出代码,我不太可能使用它。任何人都可以确认这一点,可能带有指向我可以找到的一些文档的链接。

4

1 回答 1

2

今天早上它击中了我,所以我测试了一个解决方案并且它有效:

import runpy

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

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

于 2017-02-21T08:53:45.270 回答