Heim > Backend-Entwicklung > Python-Tutorial > Ein Vergleich von vier verschiedenen Möglichkeiten, Dateien in Python zu lesen

Ein Vergleich von vier verschiedenen Möglichkeiten, Dateien in Python zu lesen

黄舟
Freigeben: 2017-05-22 23:23:20
Original
2149 Leute haben es durchsucht

Die Textverarbeitung von Python ist ein häufig auftretendes Problem. Der folgende Artikel stellt Ihnen hauptsächlich den Vergleich verschiedener Methoden von Python vorLesen von Dateien Informationen, detaillierte Beispielcodes Im Artikel finden Sie Informationen, damit jeder sie verstehen und lernen kann. Freunde, die sie benötigen, können einen Blick darauf werfen.

Vorwort

Jeder weiß, dass Python viele Möglichkeiten zum Lesen von Dateien hat, aber wenn Sie eine große Datei lesen müssen, sind unterschiedliche Lesemethoden hilfreich haben unterschiedliche Auswirkungen. Werfen wir einen Blick auf die ausführliche Einführung unten.

Szenario

Zeile für Zeile eine 2,9 G große Datei lesen

  • CPU i7 6820HQ

  • RAM 32G

Methode

Teilen Sie den Lesevorgang jeder Zeile einmal aufStringVorgang

Die folgenden Methoden verwenden alle die Methode with...as, um die Datei zu öffnen.

Die with-Anweisung eignet sich für den Zugriff auf Ressourcen, um sicherzustellen, dass unabhängig davon, ob während der Verwendung eine Ausnahme auftritt, die erforderlichen „Reinigungsvorgänge“ durchgeführt werden, um Ressourcen freizugeben, z. B. das automatische Schließen von Dateien nach der Verwendung und die automatische Erfassung von Sperren in Threads und Freigabe usw.

Methode 1 Die gebräuchlichste Art, Dateien zu lesen

with open(file, 'r') as fh:
 for line in fh.readlines():
 line.split("|")
Nach dem Login kopieren

Laufergebnis: Es dauerte 15,4346568584 Sekunden

Der Systemmonitor zeigt, dass der Speicher plötzlich von 4,8 G auf 8,4 G gestiegen ist. fh.readlines() speichert alle in den Speicher eingelesenen Zeilendaten. Diese Methode eignet sich für kleine Dateien.

Methode 2

with open(file, 'r') as fh:
 line = fh.readline()
 while line:
 line.split("|")
Nach dem Login kopieren

Laufergebnis: Es dauerte 22,3531990051 Sekunden

Es gibt fast keine Änderung Da im Speicher nur auf eine Datenzeile zugegriffen wird, ist die Zeit offensichtlich länger als die vorherige, was für die weitere Verarbeitung der Daten nicht effizient ist.

Methode 3

with open(file) as fh:
 for line in fh:
 line.split("|")
Nach dem Login kopieren

Laufergebnis: Es dauerte 13,9956979752 Sekunden

Es gibt fast keine Änderung im Speicher. Die Geschwindigkeit ist auch schneller als bei Methode zwei.

for line in fh behandelt die Datei Objekt fh als iterierbar, das automatisch gepufferte E/A- und Speicherverwaltung verwendet, sodass Sie sich keine Gedanken über große Dateien machen müssen. Das ist eine sehr pythonische Methode!

Methode 4 Dateieingabemodul

for line in fileinput.input(file):
 line.split("|")
Nach dem Login kopieren

Ausführungsergebnisse: Es dauerte 26,1103110313 Sekunden

Speicher um 200 erhöht -300 MB, die langsamste Geschwindigkeit oben.

Zusammenfassung

Die oben genannten Methoden dienen nur als Referenz. Die drei anerkannten Methoden zum Lesen großer Dateien sind immer noch die besten. Die konkrete Situation hängt jedoch immer noch von der Leistung der Maschine und der Komplexität der Datenverarbeitung ab.

[Verwandte Empfehlungen]

1. Codebeispiel für n Zeilen, nachdem Python die Datei gelesen hat

2 Datei Mini-Programm

Das obige ist der detaillierte Inhalt vonEin Vergleich von vier verschiedenen Möglichkeiten, Dateien in Python zu lesen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage