2013-02-18 13 views
17

Mam duży plik tekstowy (~ 7 GB). Szukam, czy istnieje najszybszy sposób na odczytanie dużego pliku tekstowego. Czytałem o używaniu kilku podejść jako czytanych porcji w celu przyspieszenia procesu.Python najszybszy sposób, aby przeczytać duży plik tekstowy (kilka GB)

na przykład effbot sugerują

# 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** 

w celu przetworzenia 96,900 linii tekstu na sekundę. Inne authors sugerują użycie islice()

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)) zwróci listę najbliższych n linii pliku f. Korzystanie z tej wewnątrz pętli daje plik w kawałki n linii

+1

Dlaczego nie można sprawdzić siebie, co jest dla ciebie najszybsze? – piokuc

+0

Należy zapoznać się z poniższymi sugestiami: http://stackoverflow.com/questions/14863224/efficient-reading-of-800-gb-xml-file-in-python-2-7 – BenDundee

+0

@Następna Nie chcę czytać linia po linii, ale porcja po kawałku –

Odpowiedz

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

będą czytać jedną linię w czasie do pamięci i zamknij plik po zakończeniu ...

+2

Morten line-by-line stał się zbyt wolny. –

+5

, czytaj za szybko ... –

+0

Wygląda na to, że wynikiem pętli FileObj jest pojedynczy znak, a nie linia. – 69444091

Powiązane problemy