W kodzie Python GDAL dość często widzę, że ludzie zamykają zestawy danych na końcu skryptu. Dlaczego warto zamykać zestaw danych w Pythonie GDAL? Czy są jakieś konsekwencje, jeśli tego nie zrobię?
import gdal
# open dataset
ds = gdal.Open('test.tif')
# close dataset
ds = None
Odpowiedzi:
Nie sądzę, aby miało to jakiś cel na końcu skryptu, ponieważ moduł czyszczący Pythona zrobi to samo automatycznie po zakończeniu skryptu. Powodem, dla którego warto to zrobić, jest znajdowanie się w środku skryptu, aby odzyskać posiadane zasoby, uzyskując dostęp do zestawu danych, usunąć blokady plików itp., Aby móc ich ponownie użyć.
del ds
powinien mieć ten sam efekt, ale jest wyraźniejszy co do jego intencji.Bardziej pythonowym podejściem byłoby użycie
with
instrukcji , ale GDAL / OGR jej nie implementuje. Są jednak takie opakowania GDAL / OGR, jak Rasterio i Fiona .źródło
f = open(filename)
i zamykasz jeden za pomocąf.close()
. Niedel f
lubf = None
. Dlaczego? Ponieważ to, co dzieje się z obiektami po ich odwołaniu, jest szczegółem implementacji interpretera i ponieważ jawne jest lepsze niż niejawne ( python.org/dev/peps/pep-0020 ).GDALClose()
metoda, którą należy wywołać, jeśli chcesz być jawny (widzę, że Rasterio wywołuje to wewnętrznie ).GDALClose()
nie został zaimplementowany, ale ustawienie zestawu danych naNone
(tj.ds = None
) Jest równoważne.