Byłem pod wrażeniem, że obiekty plików są natychmiast zamknięte, kiedy ich liczy referencyjne hit 0, stąd wiersz:Czy obiekt pliku zamyka się automatycznie, gdy liczba jego odwołań jest równa zero?
foo = open('foo').read()
dostanie ci zawartość pliku i natychmiast zamknij plik. Jednak po przeczytaniu odpowiedzi na Is close() necessary when using iterator on a Python file object mam wrażenie, że tak się nie dzieje i że wywołanie .close()
na obiekcie pliku jest zawsze konieczne: .
Czy powyższa linia robi to, co myślę, że robi, a nawet jeśli tak, to czy jest to działanie Pythonica?
Pytasz o obiektu pliku Python lub OS poziomu bazowego obiektu pliku? Warstwa systemu operacyjnego jest oddzielona od warstwy Pythona. O co pytasz? –
Z zadowoleniem przyjmuję wyjaśnienie, co dzieje się na obu poziomach. Dokładniej, chciałbym wiedzieć, czy napisanie tej linii kodu potencjalnie spowoduje problemy w mojej aplikacji. Zakładałem, że gdy Python zamyka obiekt pliku, który jest również zwolniony, obiekt bazowy. –