我正在编写一个 Python 脚本,它使用来自GDAL
. 这些GDAL
函数在发生错误时不会引发异常,但会向stdout
. 通常,GDAL
函数发生的错误不保证停止进程,我不需要知道发生的错误。
stdout
有没有办法在控制台打印之前拦截正在发送的消息?这些GDAL
消息会干扰我在自己的代码中提供的消息。
如“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))
这将打印错误消息:
文件系统中不存在“不存在”,并且不被识别为支持的数据集名称。