Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 拦截来自第三方代码的消息_Python_Stdout_Messages_Gdal - Fatal编程技术网

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

Python 拦截来自第三方代码的消息,python,stdout,messages,gdal,Python,Stdout,Messages,Gdal,我正在编写一个Python脚本,它使用GDAL中的第三方模块。发生错误时,GDAL函数不会引发异常,但会向stdout发送消息。一般来说,GDAL函数发生的错误不保证停止进程,我不需要知道发生了什么错误 在控制台中打印之前,是否有办法截获发送到标准输出的消息?GDAL消息会干扰我在自己的代码中提供的消息。如中所述,您可以使用GDAL.UseExceptions()打开异常,例如: from osgeo import gdal dsrc = gdal.Open('nonexist') # ...

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

在控制台中打印之前,是否有办法截获发送到标准输出的消息?
GDAL
消息会干扰我在自己的代码中提供的消息。

如中所述,您可以使用
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.
这将打印错误消息:

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

如中所述,您可以使用
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.
这将打印错误消息:

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


我已经看过Python,并阅读了有关
gdal.UseExceptions()
。我不清楚的是,这将打开异常并关闭消息,还是我将获得异常和消息?基本上,它将stderr消息转换为RuntimeError异常,可以以任何您想要的方式进行处理。我已经看过Python Gotchas并阅读了
gdal.UseExceptions()
。我不清楚的是,这会打开异常并关闭消息,还是我会得到异常和消息?基本上,它会将stderr消息转换为运行时错误异常,可以用任何您想要的方式来处理。