python zlib
来源:互联网 发布:网络教育试点工作 编辑:程序博客网 时间:2024/06/06 03:54
使用zlib.compress可以压缩字符串。使用zlib.decompress可以解压字符串。如下
代码如下复制代码#coding=utf-8
import zlib
s = "hello word, 00000000000000000000000000000000"
print len(s)
c = zlib.compress(s)
print len(c)
d = zlib.decompress(c)
print d
示范代码2:
import zlib
message = 'witch which has which witches wrist watch'
compressed = zlib.compress(message)
decompressed = zlib.decompress(compressed)
print 'original:', repr(message)
print 'compressed:', repr(compressed)
print 'decompressed:', repr(decompressed) 输出original: 'witch which has which witches wrist watch'
compressed: 'xx9c+xcf,IxceP(xcfxc8x04x92x19x89xc5PV9H4x15xc8+xca,.Q(Ox04xf2x00D?x0fx89'
decompressed: 'witch which has which witches wrist watch'
如果我们要对字符串进行解压可以使用zlib.compressobj和zlib.decompressobj对文件进行压缩解压哦,
代码如下复制代码def compress(infile, dst, level=9):
infile = open(infile, 'rb')
dst = open(dst, 'wb')
compress = zlib.compressobj(level)
data = infile.read(1024)
while data:
dst.write(compress.compress(data))
data = infile.read(1024)
dst.write(compress.flush())
def decompress(infile, dst):
infile = open(infile, 'rb')
dst = open(dst, 'wb')
decompress = zlib.decompressobj()
data = infile.read(1024)
while data:
dst.write(decompress.decompress(data))
data = infile.read(1024)
dst.write(decompress.flush())
Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等。上次介绍了zipfile模块,今天就来讲讲zlib模块。
zlib.compress(string[, level])
zlib.decompress(string[, wbits[, bufsize]])
zlib.compress用于压缩流数据。参数string指定了要压缩的数据流,参数level指定了压缩的级别,它的取值范围是1到9。压缩速度与压缩率成反比,1表示压缩速度最快,而压缩率最低,而9则表示压缩速度最慢但压缩率最高。zlib.decompress用于解压数据。参数string指定了需要解压的数据,wbits和bufsize分别用于设置系统缓冲区大小(window buffer )与输出缓冲区大小(output buffer)。下面用一个例子来演示如何使用这两个方法:
#coding=gbkimport zlib, urllibfp = urllib.urlopen('http://localhost/default.html')str = fp.read()fp.close()#---- 压缩数据流。str1 = zlib.compress(str, zlib.Z_BEST_COMPRESSION)str2 = zlib.decompress(str1)print len(str)print len(str1)print len(str2)
# ---- 结果
#5783
#1531
#5783
#coding=gbkimport zlib, urllibfp = urllib.urlopen('http://localhost/default.html') # 访问的到的网址。data = fp.read()fp.close()#---- 压缩数据流str1 = zlib.compress(data, zlib.Z_BEST_COMPRESSION)str2 = zlib.decompress(str1)print '原始数据长度:', len(data)print '-' * 30print 'zlib.compress压缩后:', len(str1)print 'zlib.decompress解压后:', len(str2)print '-' * 30#---- 使用Compress, Decompress对象对数据流进行压缩/解压缩com_obj = zlib.compressobj(zlib.Z_BEST_COMPRESSION)decom_obj = zlib.decompressobj()str_obj = com_obj.compress(data)str_obj += com_obj.flush()print 'Compress.compress压缩后:', len(str_obj)str_obj1 = decom_obj.decompress(str_obj)str_obj1 += decom_obj.flush()print 'Decompress.decompress解压后:', len(str_obj1)print '-' * 30#---- 使用Compress, Decompress对象,对数据进行分块压缩/解压缩。com_obj1 = zlib.compressobj(zlib.Z_BEST_COMPRESSION)decom_obj1 = zlib.decompressobj()chunk_size = 30;#原始数据分块str_chunks = [data[i * chunk_size:(i + 1) * chunk_size] / for i in range((len(data) + chunk_size) / chunk_size)]str_obj2 = ''for chunk in str_chunks: str_obj2 += com_obj1.compress(chunk)str_obj2 += com_obj1.flush()print '分块压缩后:', len(str_obj2)#压缩数据分块解压str_chunks = [str_obj2[i * chunk_size:(i + 1) * chunk_size] / for i in range((len(str_obj2) + chunk_size) / chunk_size)]str_obj2 = ''for chunk in str_chunks: str_obj2 += decom_obj1.decompress(chunk)str_obj2 += decom_obj1.flush()print '分块解压后:', len(str_obj2)
# ---- 结果 ------------------------
原始数据长度: 5783
------------------------------
zlib.compress压缩后: 1531
zlib.decompress解压后: 5783
------------------------------
Compress.compress压缩后: 1531
Decompress.decompress解压后: 5783
------------------------------
分块压缩后: 1531
分块解压后: 5783
- python zlib
- python zlib库
- python zlib字符串压缩
- Python安装zlib模块
- Python模块学习 ---- zlib 数据压缩
- Python模块学习 ---- zlib 数据压缩
- Python缺少zlib的问题
- zlib
- zlib
- zlib
- zlib
- zlib
- zlib
- ZLIB
- zlib
- zlib
- zlib
- zlib
- shell 整型变量自增(加1)的几种方法
- 表空间碎片的发现
- TCP协议疑难杂症全景解析
- Linux配置防火墙,开启80端口、3306端口
- 另类编辑距离-c#求解-英雄会在线编程题目
- python zlib
- 使用VS2010创建MFC工程,并添加VTK引用
- 【图】单源最短路径bellman-ford和SPFA
- Longest Substring Without Repeating Characters
- ios技术开发要点
- 寻ta分析与网站内容
- log4j详解与实战
- codeforces April Fools Day Contest 2014 A. The Great Game
- iOS开发-获取各种文件的目录路径的方法