Muszę czytać duży plik, wiersz po wierszu. Powiedzmy, że plik ma więcej niż 5 GB i muszę przeczytać każdą linię, ale oczywiście nie chcę jej używać, readlines()ponieważ utworzy bardzo dużą listę w pamięci.
Jak działa poniższy kod dla tego przypadku? Czy xreadlinessam czyta jedno po drugim do pamięci? Czy potrzebne jest wyrażenie generatora?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
Ponadto, co mogę zrobić, aby przeczytać to w odwrotnej kolejności, podobnie jak tailpolecenie Linux ?
Znalazłem:
http://code.google.com/p/pytailer/
i
„ Głowa, ogon i tył pytona czytane liniami pliku tekstowego ”
Oba działały bardzo dobrze!