代码之家  ›  专栏  ›  技术社区  ›  Brian

拦截来自第三方代码的消息

  •  1
  • Brian  · 技术社区  · 11 年前

    我正在编写一个Python脚本,该脚本使用来自 GDAL 这个 格达尔 函数在发生错误时不会引发异常,但会向发送消息 stdout 。通常 格达尔 函数不保证停止进程,我也不需要知道发生了什么错误。

    有没有办法拦截发送到的消息 标准输出 在控制台中打印之前?这个 格达尔 消息会干扰我在自己的代码中提供的消息。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Mike T    11 年前

    如中所述 "Python Gotchas" ,您可以使用打开“异常” gdal.UseExceptions() ,例如:

    from osgeo import gdal
    
    dsrc = gdal.Open('nonexist')
    # ... silence
    
    gdal.UseExceptions()
    
    dsrc = gdal.Open('nonexist')
    # Traceback (most recent call last):
    #   File "<interactive input>", line 1, in <module>
    # RuntimeError: `nonexist' does not exist in the file system,
    # and is not recognised as a supported dataset name.
    

    你可以随时使用 try except block获取实际错误消息字符串:

    try:
        dsrc = gdal.Open('nonexist')
    except RuntimeError as e:
        print(str(e))
    

    它将打印错误消息:

    `文件系统中不存在“nonlist”, 并且未被识别为支持的数据集名称。