压缩库

Python 常用的三个用于数据压缩/解压缩的库是: zlib, bz2, gzip.

gzip:gzip压缩算法
zlib:对gzip所用算法的一个改进,去除部分冗余的信息,来提高对缓冲区数据的压缩速度。但核心算法和gzip是相同的。
bz2wiki:Bzip2 uses several layers of compression techniques stacked on top of each other, which occur in the following order during compression and the reverse order during decompression. bz2所用算法是多层技术的自上而下的叠加,压缩与解压缩时各层技术顺序相反,或许这也是导致bz2压缩效率高但是压缩速度较慢的原因。


使用方法

import zlib, bz2, gzip
# Compress 压缩
# file_to_compress: Bytes
# out: Bytes
out = zlib.compress(file_to_compress)
out = bz2.compress(file_to_compress)
out = gzip.compress(file_to_compress)
# Decompress 解压缩
# file_to_decompress: Bytes
# out: Bytes
out = zlib.compress(file_to_decompress)
out = bz2.compress(file_to_decompress)
out = gzip.compress(file_to_decompress)

压缩格式特点

输入在经过压缩后,输出被压缩的字节串。

如何通过字节串判断压缩格式?

首先进行如下实验进行观察:

import zlib, bz2, gzips1 = "Python Compression"
s2 = "Same Starters?"print(s1)
print(s2)
print("s1: zlib\t", zlib.compress(s1.encode('utf-8')))
print("s2: zlib\t", zlib.compress(s2.encode('utf-8')))
print("s1: bz2\t", bz2.compress(s1.encode('utf-8')))
print("s2: bz2\t", bz2.compress(s2.encode('utf-8')))
print("s1: gzip\t", gzip.compress(s1.encode('utf-8')))
print("s2: gzip\t", gzip.compress(s2.encode('utf-8')))
>>> Python Compression
>>> Same Starters?
s1: zlib    b'x\x9c\x0b\xa8,\xc9\...cc\xcf\x03\x00B\xd5\x075'
s2: zlib    b'x\x9c\x0bN\xccMU\x08.I,*I-*\xb6\x07\x00&i\x05>'
s1: bz2     b'BZh9SY\xffr\x0c\xc...\"\x9c(H\x7f\xb9\x06d\x80'
s2: bz2     b'BZh91AY&xc8\xfc....\xe4\x8ap\xa1!\xd1\x91\xf86'
s1: gzip    b'\x1f\x8b\x08\x00sW\xf0]\...xc3\x12\x00\x00\x00'
s2: gzip    b'\x1f\x8b\x08\x00sW\xf0]\...d2l\x0e\x00\x00\x00'

可以看到,对于不同输入,各个压缩库输出的字节串都各自带有各自的标识头

  • zlib:x\x9c
  • bz2:BZh
  • gzip:\x1f

综上,在处理加密/压缩字节流时,可以通过re等手段查找标识头,确定其压缩方式进行解压缩。


2019/12 Karl

Python 常用压缩库(zlib, bz2, gzip)以及压缩格式特点相关推荐

  1. python 常用标准库

    python 常用标准库 1.文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 st ...

  2. Python常用第三方库

    Python常用第三方库 一. 文件读写 二.网络抓取和解析 三.数据库连接 四.数据清洗转换 五.数据计算和统计分析 六.自然语言处理和文本挖掘 七.图像和视频处理 八.音频处理 九.数据挖掘/机器 ...

  3. 【博学谷学习记录】超强总结,用心分享 | 人工智能编程语言Python常用标准库(上)

    Python常用标准库 上 sys库 time库 random库 math库 os库 shutil库 Python语言的急速发展很大程度上得益于其开放共享的特点和良好的社区支持和计算生态,拥有超过十几 ...

  4. python常用库教程_这几个python常用的库你必须知道!

    随着人工智能时代的到来,python变得更加流行.受欢迎,功能强大.简单易学.容易入门.应用广泛等,掀起了学习热潮,现在越来越多人转行都会学习python语言.为了让大家快速掌握python,今天为大 ...

  5. python的第三方库是干什么用的-quot;别人造好的轮子”,python常用第三方库——python自动办公7...

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 前记:这是分享和记录我个人自动化办公技能的一系列文章,意在让的小伙伴们看后能够有所帮助和长大.我们都不是专业的 ...

  6. Python常用标准库之正则表达式

    Python常用标准库之正则表达式 1.re模块常用函数 1.1 匹配对象以及group()和groups()方法 1.2 match()与search():匹配单个目标 1.3 findall(): ...

  7. Python常用第三方库——简介及下载地址

    Python常用第三方库 可以在  The Python Package Index (PyPI)  软件库(官网主页:https://pypi.org/  )查询.下载 和 发布 Python包或库 ...

  8. python常用标准库的基本用法_Python常用标准库之fileinput

    Python常用标准库之fileinput fileinput模块用于对标准输入或多个文件进行逐行遍历.这个模块的使用非常简单,相比open()方法批量处理文件,fileinput模块可以对文件.行号 ...

  9. python常用标准库有哪些-Python 200个标准库汇总

    文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串 ...

最新文章

  1. 转 fiddler教程
  2. Hyperledger Fabric 核心模块(1)整体概述
  3. python画网络关系 节点和边存在文件里_python复杂网络分析库NetworkX
  4. 计算机网络连接能否隐藏位置,如何能在局域网中隐藏电脑及IP地址
  5. hibernate.connection.release_mode
  6. java 多线程阻塞队列 与 阻塞方法与和非阻塞方法
  7. HDU2110 Crisis of HDU【母函数】
  8. Tomcat控制台中文乱码怎么处理[已解决 绝对好用]
  9. 设计模式:委托和代理
  10. 解决新版 Edge 浏览器无法使用 IDM 的问题
  11. CALayer和Retina显示屏的高分辨率的支持
  12. There are 7 missing blocks. The following files may be corrupted
  13. hotmail邮箱登录服务器,hotmail邮箱登录页面在哪 hotmail邮箱账号登录设置教程
  14. 阿里云云盘扩容数据盘_Linux
  15. 万字总结Linux内核过滤框架(Nftables)
  16. 写作的感悟:低头走路与抬头看天
  17. 大数据之父_BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”
  18. 【Android】关闭输入法
  19. traits简单介绍
  20. Python数据结构04-冒泡、选择、插入、归并、希尔、快速排序、二分查找

热门文章

  1. 传奇服务器 m2自动开启网关,GOM的M2里提示:非法网关连接 添加网关所在机器IP怎么回事?...
  2. LeakCanary 详解
  3. 千峰逆战第十二天---mvc,JSTL
  4. 计算机基本配置总价,2019年4月最新高性价比电脑主机配置清单,按着配绝对不会坑!...
  5. 软电话测试工具:SIPP
  6. 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?...
  7. CSS基础样式和排版文本段落
  8. 科思创筹建上海新工厂;宝投集团与通快签约大湾区激光应用研发中心项目 | 能动...
  9. Office Depot使用Apache Spark和 Analytics Zoo上的分布式Keras实现实时产品推荐
  10. 计算机软件的安装步骤及注意事项,组态软件介绍以及安装注意事项