Odpowiedzi:
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 w io
bibliotece (trochę podobnie do Javy z buforowanymi czytnikami itp.)
file()
jest typem, takim jak int lub lista. open()
jest funkcją do otwierania plików i zwróci file
obiekt.
Oto przykład, kiedy powinieneś używać open:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Oto przykład, kiedy powinieneś używać file:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Jak widać, istnieje dobry powód, dla którego istnieją oba, i jasny przypadek użycia obu.
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
i file
tak zadzwonię , więc obecnie różnica jest kwestią stylu. Dokumentacja Pythona zaleca używanie open
.
Podczas otwierania pliku lepiej jest użyć metody open () zamiast bezpośrednio wywoływać konstruktor plików.
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).
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.
Podczas otwierania pliku lepiej jest użyć metody open () zamiast bezpośredniego wywoływania tego konstruktora [file ()]. plik jest bardziej odpowiedni do testowania typu (na przykład zapisanie isinstance (f, plik)
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.