Python 使用gdal打开geotiff生成AttributeError:\uu退出__
我有一个光栅图像,想用gdal打开它来获取一些关于投影的信息 使用以下代码打开可以正常工作:Python 使用gdal打开geotiff生成AttributeError:\uu退出__,python,python-3.x,gdal,Python,Python 3.x,Gdal,我有一个光栅图像,想用gdal打开它来获取一些关于投影的信息 使用以下代码打开可以正常工作: from osgeo import gdal gtiff = gdal.Open(filename) prj = gtiff.GetProjection() # do some work 但是,以下操作不起作用: with gdal.Open(filename) as gtiff: prj = gtiff.GetProjection() 相反,会显示一个属性错误: AttributeErro
from osgeo import gdal
gtiff = gdal.Open(filename)
prj = gtiff.GetProjection()
# do some work
但是,以下操作不起作用:
with gdal.Open(filename) as gtiff:
prj = gtiff.GetProjection()
相反,会显示一个属性错误:
AttributeError: __exit__
我认为后者被普遍认为是更好的风格。我使用的是Python 3.4.5::Continuum Analytics,Inc.(anaconda)。Python的许多范例都依赖于“神奇的方法”。例如,对len(x)
的调用调用调用x.\uu len\uuu()
。像
或=
这样的等式也使用双下划线的神奇方法
Python的和X作为X
范例依赖于两种神奇的方法:X.\uuuuuuuuuuuuuuuuuuuuu
和X.\uuuuuuuuuuuuuu退出。gdal.Open
返回的类是一个gdal.Dataset
,它没有这些方法。因此,当像您提供的那样将与as
语句一起使用时,它会抛出一个错误
打开和关闭gdal.Dataset的正确方法是:
import gdal
ds = gdal.Open('filename.tif', gdal.GA_Update)
# do something
del ds
删除数据集
将确保更改已写入文件。您还可以通过运行ds.FlushCache()
创建该库的人似乎没有在该类型上实现上下文管理器协议。完整地回答一下:这些方法不存在的具体原因是什么?或者这是一个相对容易添加的东西(我想保存向后兼容性不会是一个问题)?。这种方法确实不可靠,尽管GDAL的Python绑定基本上不提供其他选择。