Vejo muitas vezes no código Python GDAL que as pessoas fecham os conjuntos de dados no final de seu script. Por que faz sentido fechar um conjunto de dados no Python GDAL? Existem consequências se eu não fizer isso?
import gdal
# open dataset
ds = gdal.Open('test.tif')
# close dataset
ds = None
Respostas:
Eu não acho que isso tenha algum objetivo no final do script, pois o coletor de lixo Python fará a mesma coisa automaticamente quando o script sair. O motivo pelo qual você pode fazer isso é no meio do seu script, para recuperar os recursos mantidos acessando o conjunto de dados, remover bloqueios de arquivos etc. para que você possa reutilizá-los.
del ds
deve ter o mesmo efeito, mas é mais claro quanto à sua intenção.A abordagem mais pitônica seria usar uma
with
declaração , mas o GDAL / OGR não a implementa. No entanto, existem alguns wrappers GDAL / OGR como Rasterio e Fiona .fonte
f = open(filename)
e fecha um comf.close()
. Nãodel f
ouf = None
. Por quê? Porque o que acontece aos objetos depois que eles não são mais referenciados é um detalhe da implementação do intérprete e porque explícito é melhor que implícito ( python.org/dev/peps/pep-0020 ).GDALClose()
método que deve ser chamado se você quiser ser explícito (vejo que o Rasterio chama isso internamente ).GDALClose()
não foi implementado, mas definir o conjunto de dados paraNone
(ou seja,ds = None
) é equivalente.