gzip和zlib是相近,但不完全一样的算法。http数据传输通常使用的是gzip算法。
在python里,zlib使用比较简单,它直接针对内存块进行压缩和解压,如:
import zlib
res = zlib.compress(data)
data = zlib.decompress(res)
而gzip主要针对文件进行压缩和解压,不过可以使用StringIO来用内存块模拟文件操作,如压缩示例:
import gzip
f = StringIO()
gz = gzip.GzipFile(fileobj=f, mode='wb')
gz.write(data)
gz.close()
res = f.getvalue()
解压示例:
f2 = StringIO(res)
gz2 = gzip.GzipFile(fileobj=f2, mode='rb')
data = gz2.read()
使用真实文件,示例:
import gzip
#解压
f = gzip.open('file.gz', 'rb')
data = f.read()
f.close()
#压缩
f = gzip.open('file.gz', 'wb')
f.write(data)
f.close()