python runpy.run_module 退出代码
python runpy.run_module exit code
是否可以从通过 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
。
任何人都可以确认这一点,可能是 link 到一些我可以找到它的文档。
今天早上它击中了我,所以我测试了一个解决方案并且它有效:
import runpy
try:
runpy.run_module('mymodule')
except SystemExit as exeption:
exitcode = exeption.code
else:
exitcode = 0
问题是您必须处理模块中抛出的每个异常。在我的示例中,我只处理 SystemExit
异常,因为这是我唯一感兴趣的异常。
是否可以从通过 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
。
任何人都可以确认这一点,可能是 link 到一些我可以找到它的文档。
今天早上它击中了我,所以我测试了一个解决方案并且它有效:
import runpy
try:
runpy.run_module('mymodule')
except SystemExit as exeption:
exitcode = exeption.code
else:
exitcode = 0
问题是您必须处理模块中抛出的每个异常。在我的示例中,我只处理 SystemExit
异常,因为这是我唯一感兴趣的异常。