逐行读取gzip大文件

时间:2014-04-27 16:53:26

标签: python

我需要知道一个数字出现在带有2912232966行的gzip文件中的次数,我有以下内容:

import gzip
from itertools import islice

count=0
f = gzip.open(file,'rb') 
for line in f:
lin = line.decode('utf-8')
number = lin[:lin.index('\t')]
if number == '2719708':
  conunt+=1

但我得到了这个: 'CRC校验失败0xabc8df68!= 0xba1760acL'

它只能起作用 只能工作多达4亿行,请帮忙

1 个答案:

答案 0 :(得分:1)

链接到zlib

引自jiffyclubs回答here

  

gzip模块的问题不在于它无法解压缩   部分文件,只有在尝试验证时才会发生错误   解压缩内容的校验和。 (原始校验和是   存储在压缩文件的末尾,以便验证   永远不会使用部分文件。)

     

关键是欺骗gzip跳过验证。答案是   caesar0301通过修改gzip源代码来实现这一点,但事实并非如此   走到那么远,简单的猴子修补就行了。我写了这个   上下文管理器暂时替换gzip.GzipFile._read_eof而我   解压缩部分文件:

这看起来正是你所需要的......

转到该链接并阅读整个respose。


通过搜索谷歌搜索到“python gzip crc check failed”的stackexchange链接 第一个结果