我正在编写一个使用GDAL
中的第三方模块的Python脚本。发生错误时,GDAL
函数不会引发异常,但会向stdout
发送消息。通常,GDAL
函数发生的错误不能保证停止进程,我不需要知道发生的错误。
有没有办法可以在控制台中打印之前拦截发送给stdout
的邮件? GDAL
消息会干扰我在自己的代码中提供的消息。
答案 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'在文件系统中不存在, 并且不会被识别为受支持的数据集名称。