我需要知道一个数字出现在带有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亿行,请帮忙
答案 0 :(得分:1)
链接到zlib
引自jiffyclubs回答here
gzip模块的问题不在于它无法解压缩 部分文件,只有在尝试验证时才会发生错误 解压缩内容的校验和。 (原始校验和是 存储在压缩文件的末尾,以便验证 永远不会使用部分文件。)
关键是欺骗gzip跳过验证。答案是 caesar0301通过修改gzip源代码来实现这一点,但事实并非如此 走到那么远,简单的猴子修补就行了。我写了这个 上下文管理器暂时替换gzip.GzipFile._read_eof而我 解压缩部分文件:
这看起来正是你所需要的......
转到该链接并阅读整个respose。
通过搜索谷歌搜索到“python gzip crc check failed”的stackexchange链接 第一个结果