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 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)))

python zlib ,zlib 压缩流的更多相关文章

  1. python 模块zlib 压缩与解压

    例子1:压缩与解压字符串 import zlib message = 'abcd1234' compressed = zlib.compress(message) decompressed = zli ...

  2. 基于Zlib算法的流压缩、字符串压缩源码

    原文:基于Zlib算法的流压缩.字符串压缩源码 Zlib.net官方源码demo中提供了压缩文件的源码算法.处于项目研发的需要,我需要对内存流进行压缩,由于zlib.net并无相关文字帮助只能自己看源 ...

  3. [Zlib]_[0基础]_[使用zlib库压缩文件]

    场景: 1. WIndows上没找到系统提供的win32 api来生成zip压缩文件, 有知道的大牛麻烦留个言. 2. zlib比較经常使用,编译也方便,使用它来做压缩吧. MacOSX平台默认支持z ...

  4. [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流

    1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File ...

  5. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  6. java压缩流

    java压缩流是为了减少传输时的数据量,可以将文件压缩成ZIP.JAR.GZIP等文件格式.

  7. python dpkt解析ssl流

    用法:python extract_tls_flow.py -vr  white_pcap/11/2018-01-10_13-05-09_2.pcap  -o pcap_ssl_flow.txt  & ...

  8. Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)

    Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...

  9. python+ mysql存储二进制流的方式

    很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想 ...

  10. 【转】python的zipfile压缩、解压缩

    网上搜索了很多关于python的zipfile压缩.解压缩.觉得讲述比较详细,例子也很明了.由于比较懒,就直接复制了. 以下内容大部分转于 http://blog.csdn.net/jgood/art ...

随机推荐

  1. 音乐出身的妹纸,零基础学习JAVA靠谱么

    问:表示音乐出身的妹纸一枚  某一天突然觉得身边认识的是一群程序员   突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...

  2. flutter 入口文件配置路由+加载页面

    入口文件配置路由 1.路由信息 -- 加载页面 ,通常用于显示新的内容或者广告,加载完成之后进入主页面 -- 主页面 /app 2.配置页面  main.dart main.dart // main ...

  3. LSTM编程所用函数

    1.Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果.可是当保留位跟着的即使是5,有可能进位,也有可能舍去,机会各50% 2.python基础 (1)@property 特 ...

  4. LinkedHashMap和TreeMap的有序性

    做一个数组的多属性动态排序的功能,使用map时发现有序性问题. LinkedHashMap会存储数据的插入顺序,是进入时有序:TreeMap则是默认key升序,是进入后有序(hashMap .hash ...

  5. 配置samba的流程

    1.关闭防火墙和selinuxservice iptables stopsetenforce 02.配置本地yummount /dev/cdrom /mediacd /etc/yum.repos.dc ...

  6. postgresql 创建gin索引

    1.创建gin类型的索引 postgresql 创建gin索引遇到的问题:1.ERROR: operator class "gin_trgm_ops" does not exist ...

  7. js小技巧总结

    js小技巧总结 1.Array.includes条件判断 function test(fruit) { const redFruits = ["apple", "stra ...

  8. IIS 字符串过长

    jquery.datatable.js---弹窗要用极速模式 <?xml version="1.0" encoding="utf-8"?><c ...

  9. Python module ---- re

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工具.python的re模块,在绝大 ...

  10. Python连接Access数据库遇到问题'ADODB.Connection', '未找到提供程序。该程序可能未正确安装。'的处理办法

    环境Windows7+python3.6.4 x64位+AccessDatabaseEngine_X64.exe,执行代码: import win32com.client conn = win32co ...