2013-03-26 12 views

Odpowiedz

14

Można seek do pliku plik, a następnie odczytać pewną stamtąd. Seek pozwala na uzyskanie określonego przesunięcia w pliku, a następnie możesz ograniczyć odczyt tylko do liczby bajtów z tego zakresu.

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

To tylko odczytuje te dane, których szukasz.

+2

Zauważ, że jest to równoważne tylko z kodem OP dla plików z kodowaniem jednobajtowym (takim jak ASCII) lub plików binarnych, ponieważ indeksy "start_index" i "end_index" są pozycją znakową, podczas gdy 'seek()' i 'read () 'działa z pozycją bajtu. Gdy masz plik z kodowaniem o zmiennej szerokości, może być konieczne odkodowanie pliku, aby można go było poprawnie indeksować. –

+1

To naprawdę dobry punkt. Byłem bardzo w trybie ASCII :-) –

+1

Jeszcze jeden punkt: jeśli próbujesz odczytać wiele sąsiednich segmentów pliku, fin.read (n) automatycznie ustawia wskaźnik odczytu na następny bajt do odczytania. – MrMas

Powiązane problemy