2014-09-23 39 views
2

我有一个大的gzip文件,我想仅使用seek来读取它的一部分。 关于gzip文件中使用的seek,这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格式。