2013-02-18 18 views
17

Ho un file di testo di grandi dimensioni (~ 7 GB). Sto cercando se esistano il modo più veloce per leggere file di testo di grandi dimensioni. Ho letto sull'uso di diversi approcci come letti chunk-by-chunk per accelerare il processo.Python modo più veloce per leggere un file di testo di grandi dimensioni (diversi GB)

a esempio effbot suggeriscono

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

per elaborare 96.900 righe di testo al secondo. Altro authors suggeriscono di utilizzare 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)) restituirà un elenco dei prossimi n righe del file f. L'utilizzo di questo all'interno di un ciclo vi darà il file in blocchi di n linee

+1

Perché non vuoi controllare te stesso cosa è più veloce per te? – piokuc

+0

Cehck i suggerimenti qui: http://stackoverflow.com/questions/14863224/efficient-reading-of-800-gb-xml-file-in-python-2-7 – BenDundee

+0

@Nix non desidero leggere riga per riga, ma pezzo per pezzo –

risposta

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

leggeranno una riga al momento di memoria e chiudere il file una volta fatto ...

+2

Morten line-by-line è diventato troppo lento. –

+5

, leggi troppo veloce ... –

+0

Sembra che il risultato del ciclo di FileObj sia un singolo carattere, non una linea. – 69444091

Problemi correlati