使用python gzip模块解压文件的一部分
问题描述:
我想使用gzip模块在Python中解压缩gzip文件。前提条件是,我一次获得160个字节的数据,并且在请求下一个160字节之前需要解压缩它。在请求下一个160字节之前,部分解压缩是可以的。我的代码是使用python gzip模块解压文件的一部分
import gzip
import time
import StringIO
file = open('input_cp.gz', 'rb')
buf = file.read(160)
sio = StringIO.StringIO(buf)
f = gzip.GzipFile(fileobj=sio)
data = f.read()
print data
我得到的错误是IOError:CRC校验失败。我假设这是因为它期望整个gzip内容在buf中存在,而我一次只读取160个字节。有没有解决方法?
感谢
答
用read()方法(和其他任何GzipFile中从FileObj文件的需要,喜欢接近并寻求),并把它传递给GzipFile中创建自己的类。喜欢的东西:
class MyBuffer(object):
def __init__(self, input_file):
self.input_file = input_file
def read(self, size=-1):
if size < 0:
size = 160
return self.input_file.read(min(160, size))
然后使用它像:
file = open('input_cp.gz', 'rb')
mybuf = MyBuffer(file)
f = gzip.GzipFile(fileobj=mybuf)
data = f.read()
+0
这次没有错误,但空白行是o/p到控制台。很确定160b足以解压缩。也尝试瓦特/ 2000B 类MyBuffer(对象): DEF __init __(个体,INPUT_FILE): self.input_file = INPUT_FILE DEF读(个体,大小= -1): 如果尺寸 user210126 2009-11-13 02:42:23
相关问题:http://*.com/questions/339053/how-do-you-unzip-very-large-files- in-python – jfs 2009-11-14 00:25:15