python zlib ,zlib 壓縮流

zlib

字符串:使用zlib.compress能夠壓縮字符串。使用zlib.decompress能夠解壓字符串。flask

數據流:壓縮:compressobj,解壓:decompressobjexcel

 

 

 

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。code

 

 

 

壓縮內存中的二進制流
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 BytesIOimport xlsxwriter as xwimport zlibbytesio = 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)))
相關文章
相關標籤/搜索