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

时间:2013-10-04 22:55:14

标签: python stdout messages gdal

我正在编写一个使用GDAL中的第三方模块的Python脚本。发生错误时,GDAL函数不会引发异常,但会向stdout发送消息。通常,GDAL函数发生的错误不能保证停止进程,我不需要知道发生的错误。

有没有办法可以在控制台中打印之前拦截发送给stdout的邮件? GDAL消息会干扰我在自己的代码中提供的消息。

1 个答案:

答案 0 :(得分:1)

"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块获取实际的错误消息字符串:

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

将打印错误消息:

  

`nonexist'在文件系统中不存在,   并且不会被识别为受支持的数据集名称。