2014-09-23 5 views
2

У меня есть большой файл gzip, и я хотел бы прочитать только его части, используя seek. Об использовании seek на gzip файлов, это page говорит:Об использовании поиска в файлах gzip

позиция искать() является относительно несжатых данных, поэтому абонент даже не нужно знать, что файл данных сжимается.

Означает ли это, что seek должен читать и распаковывать данные с начала файла в целевое положение?

ответ

5

Да. This is the code:

elif self.mode == READ: 
    if offset < self.offset: 
     # for negative seek, rewind and do positive seek 
     self.rewind() 
    count = offset - self.offset 
    for i in range(count // 1024): 
     self.read(1024) 
    self.read(count % 1024) 

Alternatives are discussed here. Проблема присуща формату gzip.