使用gdal打开geotiff会产生AttributeError:__ exit__

时间:2016-11-09 17:53:05

标签: 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()

而是显示属性错误:

AttributeError: __exit__

我认为后者通常被认为是更好的风格。我正在使用Python 3.4.5 :: Continuum Analytics,Inc。(anaconda)。

1 个答案:

答案 0 :(得分:1)

Python的许多范例都依赖于“魔术方法”。例如,对len(x)的调用会调用x.__len__()>>=等等也使用双重强制的魔术方法。

Python的with X as x范例依赖于两种神奇的方法:X.__enter__X.__exit__gdal.Open返回的类是gdal.Dataset,没有这些方法。因此,在使用您提供的with as语句时会抛出错误。

打开和关闭gdal.Dataset的正确方法是:

import gdal
ds = gdal.Open('filename.tif', gdal.GA_Update)
# do something
del ds

删除Dataset将确保将更改写入文件。您还可以通过运行ds.FlushCache()

来编写这些更改

Doc about Python's with as statements

Python's special methods