1

我正在编写一个 Python 脚本,它使用来自GDAL. 这些GDAL函数在发生错误时不会引发异常,但会向stdout. 通常,GDAL函数发生的错误不保证停止进程,我不需要知道发生的错误。

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

4

1 回答 1

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))

这将打印错误消息:

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

于 2013-10-05T06:52:43.987 回答