Antworten:
Sie sollten immer verwenden open()
.
Wie in der Dokumentation angegeben :
Beim Öffnen einer Datei ist es vorzuziehen, open () zu verwenden, anstatt diesen Konstruktor direkt aufzurufen. Datei eignet sich eher zum Typentest (z. B. Schreiben von "isinstance (f, file)").
Auch file()
wurde entfernt , da Python 3.0.
Zwei Gründe: Die Python-Philosophie "Es sollte einen Weg geben, dies zu tun" und file
geht verloren.
file
ist der tatsächliche Typ (mit z. B. file('myfile.txt')
wird der Konstruktor aufgerufen).open
ist eine Factory-Funktion, die ein Dateiobjekt zurückgibt.
In Python 3.0 file
wird es von einer integrierten Version zu einer Implementierung durch mehrere Klassen in der io
Bibliothek übergehen (ähnlich wie Java mit gepufferten Lesegeräten usw.).
file()
ist ein Typ wie ein Int oder eine Liste. open()
ist eine Funktion zum Öffnen von Dateien und gibt a zurückfile
Objekt zurück.
Dies ist ein Beispiel dafür, wann Sie open verwenden sollten:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Dies ist ein Beispiel dafür, wann Sie file verwenden sollten:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Wie Sie sehen, gibt es einen guten Grund für beide und einen klaren Anwendungsfall für beide.
with
Anweisung geöffnet werden . with open(filename, 'r') as f: \ for line in f: \ process(line)
. Dies vermeidet das explizite Schließen. Python 2.6 und höher unterstützen die with
Anweisung nativ . In Python 2.5 müssen Sie from __future__ import with_statement
den Anfang Ihres Codes hinzufügen .
file
Klasse mit speziellen Methoden ausgestattet, die automatisch aufgerufen werden, wenn eine Datei über eine with
Anweisung geöffnet wird . Diese speziellen Methoden stellen sicher, dass die Datei ordnungsgemäß und sicher geöffnet und geschlossen wird.
Funktionell sind die beiden gleich; open
wird file
sowieso anrufen , daher ist der Unterschied derzeit eine Frage des Stils. In den Python-Dokumenten wird die Verwendung empfohlen open
.
Beim Öffnen einer Datei ist es vorzuziehen, open () zu verwenden, anstatt den Dateikonstruktor direkt aufzurufen.
Der Grund dafür ist, dass in zukünftigen Versionen nicht garantiert wird, dass sie gleich sind ( open
wird zu einer Factory-Funktion, die je nach geöffnetem Pfad Objekte unterschiedlichen Typs zurückgibt).
Verwenden Sie open () immer nur zum Öffnen von Dateien. file () wird in 3.0 tatsächlich entfernt und ist derzeit veraltet. Sie hatten eine seltsame Beziehung, aber file () läuft jetzt, sodass Sie sich keine Sorgen mehr machen müssen.
Das Folgende stammt aus den Python 2.6-Dokumenten. [Klammer Zeug] von mir hinzugefügt.
Beim Öffnen einer Datei ist es vorzuziehen, open () zu verwenden, anstatt diesen Konstruktor [file ()] direkt aufzurufen. Datei eignet sich besser für Typprüfungen (z. B. Schreiben von isinstance (f, Datei)
Laut Van Rossum sollten Sie open () verwenden, obwohl open () derzeit ein Alias für file () ist, da sich dies in Zukunft ändern könnte.