2013-03-26 17 views

cevap

14

yapabilirsiniz seek dosyası ve oradan belirli miktarda okuyun:

Esasen, ben yapmanın daha verimli bir yol arıyorum. Arama, bir dosya içinde belirli bir ofset elde etmenizi sağlar ve daha sonra okumayı yalnızca bu aralıktaki bayt sayısını sınırlandırabilirsiniz.

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

Bu yalnızca aradığınız verileri okuyacaktır.

+2

yalnızca OP'nin 'start_index' ve' end_index' karakterleri 'seek() 've' read (read() 'dır çünkü tek-baytlı kodlama (ASCII gibi) ya da ikili dosyalar içeren dosyaların OP kodu ile eşdeğer olduğunu unutmayın.) 'bayt konumu ile çalışır. Değişken genişlik kodlamasına sahip bir dosyanız olduğunda, doğru bir şekilde dizine eklenebilmesi için dosyanın kodunu çözmeniz gerekebilir. –

+1

Bu gerçekten iyi bir nokta. ASCII modunda çok fazlaydım :-) –

+1

Tek bir ekstra nokta: bir dosyanın birden çok bitişik parçasını okumaya çalışıyorsanız, fin.read (n) oku okunan göstericiyi otomatik olarak okunacak bir sonraki bayta ayarlar. – MrMas

İlgili konular