python zlib ,zlib 压缩流

zlib

字符串:使用zlib.compress可以压缩字符串。使用zlib.decompress可以解压字符串。

数据流:压缩:compressobj,解压:decompressobj

 

 

 

import zlib
import time

s='aldsfjdals拉萨的附近拉水电费拉克丝等级分sdfgfsdgsdfg ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd类的撒酒疯拉萨的解放路'.encode('utf-8')
#需要转成bytes类型:
for i in range(0,15):
s+=s
print(len(s))

#---------------------------------------------------
str_time=time.time()
compress_str = zlib.compress(s)#进行压缩
print(len(compress_str))
#print(zlib.decompress(compress_str).decode('utf-8'))#数据解压
print(time.time()-str_time)


#-------------------------------------------------
str_obj=time.time()
level=9
c_obj = zlib.compressobj(level)#设置压缩等级
com_obj_str = c_obj.compress(s)
print(len(com_obj_str))
print(time.time()-str_obj)

# 7995392
# 31149
# 0.12890625
# 16425
# 0.1015625

 注:compressobj返回一个压缩对象,用来压缩不能一下子读入内存的数据流。 level 从9到-1表示压缩等级,其中1最快但压缩度最小,9最慢但压缩度最大,0不压缩,默认是-1大约相当于与等级6,是一个压缩速度和压缩度适中的level。

 

 

 

压缩内存中的二进制流
from io import BytesIO
import zlib
b_memory= BytesIO()
b_memory.write("很多数据sldkfjlsakjfsldakjflasjflaskdj".encode('utf-8'))
compress_str = zlib.compress(b_memory.getvalue())
print(compress_str)
print(zlib.decompress(compress_str).decode('utf-8'))
 

 

 

数据流压缩和实际应用  
from io import BytesIO
import xlsxwriter as xw
import zlib
bytesio = BytesIO()
workbook = xw.Workbook(bytesio)

work_sheet = workbook.add_worksheet('excel')
merge_format=workbook.add_format(
{
"bold":True,
"bg_color":"red",
"valign":"top"
}
)
for row in range(10):
for col in range(10):
work_sheet.write(row,col,"需要写入的内容",merge_format)



workbook.close()

file_bytes = bytesio.getvalue()
print("文件大小:{}".format(len(file_bytes)))
with open('save.xlsx','wb') as f:
f.write(file_bytes)
f.flush()

compress_file_bytes = zlib.compress(file_bytes,9)
print("文件大小:{}".format(len(compress_file_bytes)))

 

转载于:https://www.cnblogs.com/yanxiatingyu/p/10220442.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值