Python - Wann verwendet man Datei vs öffnen
Frage
Was ist der Unterschied zwischen file
und open
in Python? Wann sollte ich welche? (Sagen, ich bin in 2.5)
Lösung
Sie sollten immer open()
verwenden.
Als Dokumentation heißt es:
Wenn Sie eine Datei zu öffnen, ist es vorzuziehen, zu verwenden, open (), anstatt diese von Aufrufen Konstruktor direkt. Datei ist mehr geeignet Prüfung Typ (zB Schreiben "isinstance (f, Datei)").
Auch file()
hat seit Python 3.0 entfernt .
Andere Tipps
Zwei Gründe:. Der Python-Philosophie „Es sollte eine Möglichkeit sein, es zu tun“ und file
weggeht
file
ist der tatsächliche Typ (beispielsweise unter Verwendung file('myfile.txt')
Konstruktor ruft). open
ist eine Fabrik-Funktion, die ein Dateiobjekt zurück.
In Python 3.0 file
wird sich von einem eingebaut, um zu bewegen, indem mehrere Klassen in der Bibliothek io
umgesetzt (etwas ähnlich wie Java mit gepufferten Leser, usw.)
file()
ist eine Art, wie ein int oder eine Liste. open()
ist eine Funktion zum Öffnen von Dateien, und wird ein file
Objekt zurück.
Dies ist ein Beispiel für die beim Öffnen verwenden sollte:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Dies ist ein Beispiel dafür, wann Sie Datei 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 können, gibt es einen guten Grund für beide existieren und ein klarer Anwendungsfall für beide.
Funktionell sind die beiden gleich sind; open
ruft file
sowieso, also zur Zeit der Unterschied eine Frage des Stils ist. Die Python docs empfehlen open
verwenden.
Wenn Sie eine Datei zu öffnen, ist es vorzuziehen, offen () zu verwenden, anstatt die Datei Konstruktor direkt aufrufen.
Der Grund dafür ist, dass in zukünftigen Versionen ist sie nicht den gleiche (open
wird eine Fabrik-Funktion werden, die auf dem Weg in Abhängigkeit Objekte verschiedenen Typen gibt es zu öffnen) werden gewährleistet.
Nur jemals verwenden open () zum Öffnen von Dateien. Datei () tatsächlich in 3.0 entfernt wird, und es ist im Moment veraltet. Sie haben eine Art seltsamer Beziehung haben, aber Datei () wird nun, so gibt es keine Notwendigkeit mehr zu kümmern.
Diefinden Sie aus dem Python 2.6 docs. [Klammer Sachen] von mir hinzugefügt.
Wenn Sie eine Datei zu öffnen, ist es vorzuziehen ist offen () zu verwenden, anstatt Aufruf dieser [Datei ()] Konstruktor direkt. Datei ist geeignete Test einzugeben (beispielsweise das Schreiben isinstance (f, file)
Nach Ansicht von Herrn Van Rossum, obwohl open () ist zur Zeit einen Aliasname für Datei () sollten Sie offen () verwenden, weil dies in Zukunft ändern könnte.