2013-02-18 16 views
17

Ich habe eine große Textdatei (~ 7 GB). Ich suche, ob es die schnellste Möglichkeit gibt, große Textdateien zu lesen. Ich habe gelesen, dass mehrere Ansätze als Stück für Stück gelesen werden, um den Prozess zu beschleunigen.Python schnellste Möglichkeit, eine große Textdatei (mehrere GB) zu lesen

am Beispiel effbot vorschlagen

# File: readline-example-3.py 

file = open("sample.txt") 

while 1: 
    lines = file.readlines(100000) 
    if not lines: 
     break 
    for line in lines: 
     pass # do something**strong text** 

um 96.900 Textzeilen pro Sekunde zu verarbeiten. Andere authors vorschlagen Islice zu verwenden()

from itertools import islice 

with open(...) as f: 
    while True: 
     next_n_lines = list(islice(f, n)) 
     if not next_n_lines: 
      break 
     # process next_n_lines 

list(islice(f, n)) wird eine Liste der nächsten n Zeilen der Datei f zurückzukehren. Mit dieser in einer Schleife geben Sie die Datei in Blöcken von n Linien

+1

Warum nicht Sie überprüfen selbst was ist am schnellsten für dich? – piokuc

+0

Cehck die Vorschläge hier: http://StackOverflow.com/Questions/14863224/Efficient-Reading-of-800-Gb-XML-File-in-Python-2-7 – BenDundee

+0

@ Nix ich möchte nicht lesen Zeile für Zeile, aber Chunk für Chunk –

Antwort

9
with open(<FILE>) as FileObj: 
    for lines in FileObj: 
     print lines # or do some other thing with the line... 

eine Zeile zu der Zeit in den Speicher gelesen wird, und schließen Sie die Datei, wenn Sie fertig ...

+2

Morten Zeile für Zeile wurde zu langsam. –

+5

aay, lies zu schnell ... –

+0

Sieht so aus, als wäre das Ergebnis der Schleife von FileObj ein einzelnes Zeichen, keine Zeile. – 69444091

Verwandte Themen