Python数据压缩神器
目录
一、前言:
- 我使用数据压缩之前,我们先要思考一下,我们为什么要进行数据压缩。
- 数据压缩有利有弊,好处是当数据量大的时候我们能够节省空间;坏处是节省空间的同时也带来了时间上的消耗,也就是所谓的以时间换取空间。
- 当然,需不需要进行数据压缩还是要看具体的需求,毕竟压缩率越高,所需的时间消耗也会越高。
- zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权。截至2007年3月,zlib是包含在Coverity的美国国土安全部赞助者选择继续审查的开源项目。
- Python3中已经内置了zlib库。
二、zlib的使用:
- zlib的使用非常方便,一般我们只需要掌握两个方法就可以了
compress(data,[.level])
- data为待压缩的二进制数据,level为可选参数,0~9,级别越高压缩率越高,相对的耗时越高,默认为9
decompress(data)
-
data为待解压数据
-
示例代码如下:
import zlib str = b"hello word, i am anjie" # ---- 压缩数据流。 str1 = zlib.compress(str, zlib.Z_BEST_COMPRESSION) str2 = zlib.decompress(str1) print('数据为压缩长度%d '%len(str)) print('数据压缩后长度%d'%len(str1)) print('数据解压后长度%d'%len(str2))
-
执行结果如下:
数据为压缩长度22 数据压缩后长度30 数据解压后长度22
-
不敢相信,居然压缩了还变长了,这其实跟压缩原理有关,最简单的说就是数据中相同的数据点越多,压缩率就越高,不同点越多,压缩率越低,比如我们该一下数据再试一下。
-
代码修改为:
import zlib str = b"hello word, i am anjie000000000000000000000000000000000000000000000000000000000" str1 = zlib.compress(str, zlib.Z_BEST_COMPRESSION) str2 = zlib.decompress(str1) print('数据为压缩长度%d '%len(str)) print('数据压缩后长度%d'%len(str1)) print('数据解压后长度%d'%len(str2))
-
结果输出为:
数据为压缩长度79 数据压缩后长度33 数据解压后长度79
-
以后咱就可以想压就压了