2014-09-23 33 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格式。