Ist es einfach, eine Zeile aus einer gz-komprimierten Textdatei mit Python zu lesen, ohne die Datei vollständig zu extrahieren? Ich habe eine Text.gz Datei, die ungefähr 200mb ist. Wenn ich es extrahiere, wird es 7,4 GB. Und das ist nicht die einzige Datei, die ich lesen muss. Für den gesamten Prozess muss ich 10 Dateien lesen. Obwohl dies eine sequenzielle Arbeit sein wird, denke ich, dass es eine schlaue Sache ist, dies zu tun, ohne die gesamte Information auszubeuten. Ich weiß nicht einmal, dass es möglich ist. Wie kann es mit Python gemacht werden? Ich muss eine Textdatei Zeile für Zeile lesen.Python: Zeilen aus komprimierten Textdateien lesen
32
A
Antwort
12
Haben Sie versucht, gzip.GzipFile zu verwenden? Argumente sind ähnlich wie open
.
38
Sie könnten das Standard-Gzip-Modul in Python verwenden. Verwenden Sie einfach:
gzip.open('myfile.gz')
, um die Datei als jede andere Datei zu öffnen und seine Zeilen zu lesen.
Weitere Informationen hier: Python gzip module
22
Mit gzip.GzipFile:
import gzip
with gzip.open('input.gz','r') as f:
for line in f:
print('got line', line)
Hinweis : für python3 haben Sie die Datei angeben, in 'rt'
, als 'r'
standardmäßig binäres Lesen geöffnet werden, oder Ansonsten verwenden Sie line.decode(...)
.
Hinweis : gzip.open(filename, mode)
ist ein Alias für gzip.GzipFile(filename, mode)
. Ich bevorzuge die ehemalige, wie es ähnlich aussieht with open(...) as f:
zum Öffnen von unkomprimierten Dateien verwendet.
Verwandte Themen
- 1. Lesen von Textdateien mit read.table
- 2. Python-cant aus allen Zeilen aus einer csv lesen
- 3. Lesen große Textdateien in Python wird langsamer über Iterationen
- 4. C# - Textdateien lesen (System IO)
- 5. Lesen und Schreiben von Textdateien
- 6. Lesen von Daten von Spalten und Zeilen aus Textdateien in dev C++
- 7. Lesen von großen Textdateien effizient
- 8. Wie können Sie Textdateien lesen?
- 9. Lesen von Textdateien, Fehler mit Last MATLAB
- 10. lesen in bestimmten Zeilen aus einer CSV-Datei mit Python
- 11. Vergleichen zweier Textdateien in Python
- 12. So sortieren Sie Textdateien in Python in Zeilen
- 13. Kombinieren von Spalten aus zwei verschiedenen Textdateien in Python
- 14. Lesen und Schreiben Anpassungsmuster in Textdateien
- 15. Lesen von komprimierten FASTA bz2-Datei mit skbio
- 16. Kernel-Version aus dem komprimierten Kernel-Image
- 17. Lesen von zwei Zeilen aus StreamReader VB.Net
- 18. Mehrere Zeilen gleichzeitig aus einer Datei lesen
- 19. Lesen mehrerer Zeilen aus TCP-Stream
- 20. ZipInputStream meldet keine * tatsächlichen * (d. H. Komprimierten) Bytes lesen
- 21. rbind Textdateien mit unterschiedlicher Länge der Zeilen
- 22. Caffe: LMDB aus Python lesen
- 23. VB lesen/schreiben 5 GB Textdateien
- 24. lesen arabische Zeichen von Textdateien in PHP
- 25. Lesen Sie Unicode Textdateien mit Java
- 26. Python-Modul zum Formatieren von Textdateien
- 27. Anfügen mehrere Textdateien Wörterbücher Python
- 28. Wie lesen EMACS Lisp-Programmierer Textdateien zu Nichtbearbeitungszwecken?
- 29. Speicherfehler beim Lesen von verschachtelten Textdateien in Spark von S3
- 30. End-line Zeichen aus den Zeilen lesen aus Textdatei, mit Python
aus Neugier lädt dies die gesamte Datei in den Speicher? Oder ist es schlau genug, um Linien nach Bedarf zu laden? –
@Sachin_ruk Dies lädt nicht die Datei, die es gerade öffnet. Um die Daten tatsächlich aus der Datei zu laden, müssen Sie '' 'f.readline()' 'ausführen, um Zeile zu Zeile zu lesen. Oder '' f.readlines (N) '' wo '' N'' ist die Anzahl der Zeilen, die Sie lesen möchten. – Tom