Jaka jest różnica między file
i open
w Pythonie? Kiedy należy użyć którego? (Powiedz, że jestem w 2.5)
138
Powinieneś zawsze używać open()
.
Jak podaje dokumentacja :
Podczas otwierania pliku lepiej jest użyć metody open () zamiast bezpośredniego wywoływania tego konstruktora. plik jest bardziej odpowiedni do testowania typu (na przykład zapis „isinstance (f, plik)”).
Ponadto, file()
został usunięty , ponieważ Python 3.0.
Z dwóch powodów: filozofia Pythona „Powinien istnieć jeden sposób, aby to zrobić” i
file
odchodzi.file
jest rzeczywistym typem (użycie np.file('myfile.txt')
wywołuje jego konstruktor).open
jest funkcją fabryczną, która zwraca obiekt pliku.W Pythonie 3.0
file
przejdzie od bycia wbudowanym do zaimplementowanego przez wiele klas wio
bibliotece (trochę podobnie do Javy z buforowanymi czytnikami itp.)źródło
file()
jest typem, takim jak int lub lista.open()
jest funkcją do otwierania plików i zwrócifile
obiekt.Oto przykład, kiedy powinieneś używać open:
Oto przykład, kiedy powinieneś używać file:
Jak widać, istnieje dobry powód, dla którego istnieją oba, i jasny przypadek użycia obu.
źródło
with
oświadczenia.with open(filename, 'r') as f: \ for line in f: \ process(line)
. Pozwala to uniknąć jawnego zamknięcia. Python 2.6 i nowsze wersje natywnie obsługują tęwith
instrukcję. W Pythonie 2.5 musisz dodaćfrom __future__ import with_statement
na początku swojego kodu.file
klasa została wyposażona w specjalne metody, które są wywoływane automatycznie za każdym razem, gdy plik jest otwierany za pomocąwith
instrukcji. Te specjalne metody zapewniają prawidłowe i bezpieczne otwieranie i zamykanie pliku.Funkcjonalnie te dwa są takie same;
open
ifile
tak zadzwonię , więc obecnie różnica jest kwestią stylu. Dokumentacja Pythona zaleca używanieopen
.Powodem jest to, że w przyszłych wersjach nie ma gwarancji, że będą takie same (
open
staną się funkcją fabryczną, która zwraca obiekty różnych typów w zależności od ścieżki, którą otwiera).źródło
Zawsze używaj metody open () do otwierania plików. file () jest obecnie usuwany w wersji 3.0 i obecnie jest przestarzały. Mieli dziwny związek, ale funkcja file () jest teraz dostępna, więc nie musisz się już martwić.
Poniższe informacje pochodzą z dokumentacji Pythona 2.6. [elementy wspornika] dodane przeze mnie.
źródło
Według pana Van Rossuma, chociaż open () jest obecnie aliasem dla file (), powinieneś użyć open (), ponieważ może się to zmienić w przyszłości.
źródło