Veo con bastante frecuencia en el código Python GDAL que las personas cierran conjuntos de datos al final de su secuencia de comandos. ¿Por qué tiene sentido cerrar un conjunto de datos en Python GDAL? ¿Hay alguna consecuencia si no lo hago?
import gdal
# open dataset
ds = gdal.Open('test.tif')
# close dataset
ds = None
Respuestas:
No creo que esto tenga ningún propósito al final del script, ya que el recolector de basura Python hará lo mismo automáticamente cuando el script salga. La razón por la que puede querer hacerlo es en el medio de su secuencia de comandos, para recuperar los recursos almacenados al acceder al conjunto de datos, eliminar bloqueos de archivos, etc. para poder reutilizarlos.
del ds
debería tener el mismo efecto pero es más claro en cuanto a su intención.El enfoque más pitónico sería usar una
with
declaración , pero GDAL / OGR no la implementa. Sin embargo, hay algunos envoltorios GDAL / OGR como Rasterio y Fiona que sí.fuente
f = open(filename)
y cierra uno conf.close()
. Nodel f
of = None
. ¿Por qué? Porque lo que sucede a los objetos después de que ya no se hace referencia a ellos es un detalle de la implementación del intérprete y porque explícito es mejor que implícito ( python.org/dev/peps/pep-0020 ).GDALClose()
método que debería llamarse si desea ser explícito (veo que Rasterio llama a esto internamente ).GDALClose()
no se ha implementado, pero establecer el conjunto de datos enNone
(es decir,ds = None
) es equivalente.