Was ist der Unterschied zwischen file
und open
in Python? Wann soll ich welche verwenden? (Angenommen, ich bin in 2.5)
138
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 derio
Bibliothek übergehen (ähnlich wie Java mit gepufferten Lesegeräten usw.).quelle
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:
Dies ist ein Beispiel dafür, wann Sie file verwenden sollten:
Wie Sie sehen, gibt es einen guten Grund für beide und einen klaren Anwendungsfall für beide.
quelle
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 diewith
Anweisung nativ . In Python 2.5 müssen Siefrom __future__ import with_statement
den Anfang Ihres Codes hinzufügen .file
Klasse mit speziellen Methoden ausgestattet, die automatisch aufgerufen werden, wenn eine Datei über einewith
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
wirdfile
sowieso anrufen , daher ist der Unterschied derzeit eine Frage des Stils. In den Python-Dokumenten wird die Verwendung empfohlenopen
.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).quelle
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.
quelle
Laut Van Rossum sollten Sie open () verwenden, obwohl open () derzeit ein Alias für file () ist, da sich dies in Zukunft ändern könnte.
quelle