2013-03-26 14 views

risposta

14

È possibile seek nel file il file e poi leggere una certa quantità da lì. Cerca consente di raggiungere uno specifico offset all'interno di un file e quindi limitare la lettura al solo numero di byte in tale intervallo.

with open(filename) as fin: 
    fin.seek(start_index) 
    data = fin.read(end_index - start_index) 

Questo leggerà solo i dati che stai cercando.

+2

nota che questo è equivalente solo con il codice OP per i file con codifica a byte singolo (come ASCII) o file binari poiché 'start_index' dell'OP e' end_index' sono posizione dei caratteri mentre 'seek()' e 'read () 'funziona con la posizione del byte. Quando hai un file con codifica a larghezza variabile, potresti dover decodificare il file per poterlo indicizzare correttamente. –

+1

Questo è davvero un buon punto. Ero molto in modalità ASCII :-) –

+1

Un punto in più: se stai provando a leggere più segmenti contigui di un file, fin.read (n) imposta automaticamente il puntatore di lettura sul prossimo byte da leggere. – MrMas

Problemi correlati