Hallo,
wenn ich z.B ein 50 MB txt file durchlaufe zeile fuer zeile dauert das unheimlich lang. Gibt es eine Methode mit der ich schneller durchlaufen kann udn nach gewuenschten informationen lesen kann?
Vielleicht wenn ich mir das file komplett in den speicher als string hole und dann darauf mit regular expressions operiere ? ist das schneller?
danke fuer hilfe
Gewaltiges file schnell durchlesen
Versuchs doch einfach.
Wobei Zeilenweises lesen eigentlich nicht allzu langsam sein sollte. Wie sieht denn Dein Quelltext dafür aus?
Wobei Zeilenweises lesen eigentlich nicht allzu langsam sein sollte. Wie sieht denn Dein Quelltext dafür aus?
Am besten mapped man dei Datei in den Hauptspeicher, dann kann man mit find im mapping suchen.
Kurzer Ausschnitt zur Veranschaulichung (Die Enrückung ist vermutlich daneben):
Kurzer Ausschnitt zur Veranschaulichung (Die Enrückung ist vermutlich daneben):
Code: Alles auswählen
reportFile = open( filename )
length = os.fstat( reportFile.fileno() ).st_size
if length == 0:
# Don't map zero length files, windows will barf
continue
try:
mapping = mmap.mmap( reportFile.fileno(), length,
mmap.MAP_PRIVATE, mmap.PROT_READ )
except AttributeError:
mapping = mmap.mmap(
reportFile.fileno(),
0, None,
mmap.ACCESS_READ )
current = 0
while current < length:
startHeader = mapping.find( "Start:", current )
startStart = startHeader + len( "Start:" )
startString = mapping[ startStart : mapping.find( ".", startStart ).strip()
stopHeader = mapping.find( "Stopp:", current )
startStop = stopHeader + len( "Stopp:" )
stopString = mapping[ startStop : mapping.find( ".", startStop )].strip()