python - 一种优雅的方式来包装另一个脚本以在 python 中进行错误处理并保持相同的命令行 API
问题描述
我有一个脚本,我想用一个错误处理程序包装它,如果脚本失败,它会发送一封电子邮件。
直接的方法是:
try:
<script imports>
<script argument parse>
<script contents>
except Exception as e:
send_email(e)
raise
但是我觉得这个解决方案很麻烦。有什么更优雅的方法,同时保持与原始脚本相同的命令行 API?
编辑:如果有一个 API 像这样的解决方案会很棒:python email_wrap.py script_to_run.py <arguments>
. 但是,我不确定如何操作命令行参数。
解决方案
(OP在这里)我找到了如何做到这一点:
email_wrap.py
import runpy
try:
scriptname_to_wrap = sys.argv[1]
sys.argv = [sys.argv[0]] + sys.argv[2:]
runpy.run_path(scriptname_to_wrap, run_name="__main__")
except BaseException as e:
send_email(e)
raise
推荐阅读
- python - 批量填充熊猫中的虚拟变量列
- scala - 使用 Scala 查找键中最常见的“不常见”词
- whatsapp - Whatsapp 如何找到接收者的 IP 地址?
- angular - Angular 5 导航取消了 Guard
- javascript - 解决此问题的最佳/最有效方法是什么?
- cuda - BiCGStab 使用 Fortran 中的 CUDA cuSparse 例程:分析期间的 CUSPARSE_INTERNAL_ERROR
- python - 将 XML 转换为 Python 对象 - 多个 IF 语句
- java - 从无限流派生的排序流无法迭代
- python - 优化方法(用于数据帧)以查找与指定时间范围重叠的时间范围
- c - 不同布局的数组可以别名吗?