Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python包装另一个脚本以进行错误处理并保持相同的命令行API的优雅方式_Python_Error Handling - Fatal编程技术网

用python包装另一个脚本以进行错误处理并保持相同的命令行API的优雅方式

用python包装另一个脚本以进行错误处理并保持相同的命令行API的优雅方式,python,error-handling,Python,Error Handling,我有一个脚本,我想包装一个错误处理程序,发送电子邮件,如果脚本失败 直接的方法是: try: <script imports> <script argument parse> <script contents> except Exception as e: send_email(e) raise 试试看: 例外情况除外,如e: 发送电子邮件(e) 提升 然而,我觉得这个解决方案很麻烦。在保持与原始脚本相同的命令行API的同时,还有什么更

我有一个脚本,我想包装一个错误处理程序,发送电子邮件,如果脚本失败

直接的方法是:

try:
  <script imports>
  <script argument parse>
  <script contents>
except Exception as e:
  send_email(e)
  raise
试试看:
例外情况除外,如e:
发送电子邮件(e)
提升
然而,我觉得这个解决方案很麻烦。在保持与原始脚本相同的命令行API的同时,还有什么更优雅的方法呢

编辑:如果有一个API解决方案,比如:
python email\u wrap.py script\u to\u run.py
,那就太好了。但是,我不确定如何操作命令行参数。

(请点击此处)我发现了如何操作:

电子邮件_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