Frage

Was ist der Unterschied zwischen file und open in Python? Wann sollte ich welche? (Sagen, ich bin in 2.5)

War es hilfreich?

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.

Die

finden 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top