zlib 模块,提供了压缩和解压缩的函数,都是对字符串进行操作的,可以理解为是各种不同类型的数据经过处理成为字符串或是二进制字符串,再进行压缩解压缩。是和 gzip 相兼容的压缩模块

模块方法:

zlib.adler32(data[, value]):计算数据 data 的 Adler-32 值,这是一个用于验证数据是否完整的算法,和 CRC32 算法相比速度更快
zlib.crc32(data[, value]):计算数据 data 的 CRC32 值,也是一个用于验证数据是否完整的算法
zlib.compress(string[, level]):压缩 string 里的数据,level 指定压缩方式,1-9 递增速度变慢,压缩变多,0 代表不压缩,默认 6
zlib.decompress(string[, wbits[, bufsize]]):解压缩 string 里的数据,wbits 指定系统读入缓冲区的大小,bufsize 指定输出缓冲区的大小

模块的类:

1、Compression 对象,可以一点点读取数据,不用一次性读入占用大量内存

1.1 构建对象

zlib.compressobj([level[, method[, wbits[, memlevel[, strategy]]]]]):level、wbits 同上,method 指定压缩算法,目前就只有默认的 DEFLATED,memlevel 控制内部压缩时的内存使用量,1-9 越高用越多内存,但速度更快压缩更多,默认 8,strategy 用于调整压缩算法 默认 Z_DEFAULT_STRATEGY, 还有 Z_FILTERED 和 Z_HUFFMAN_ONLY,不知道和 method 有什么区别,一般都是默认

1.2 对象方法

compress(string):压缩 string,返回压缩后的字符串,结果要和之前调用的 compress 的结果连接起来,最后再调用 flush,完整压缩
flush([mode]):把剩余的输入在缓冲区内的数据全部压缩,返回压缩后的字符串,mode 可以为 Z_SYNC_FLUSH, Z_FULL_FLUSH,或 Z_FINISH。默认 Z_FINISH,不能再对这个对象调用 compress,只能删除对象,另外两个允许后续的操作
copy():拷贝一个 Compression 对象,对于有共同部分的文件压缩时有用

2、Decompression 对象,也是可以一点点读取数据,不用消耗大量内存

2.1 构建对象

zlib.decompressobj([wbits]):wbits 同上

2.2 对象方法

decompress(string[, max_length]):解压缩 string,max_length 指定一次解压结果的最大长度,剩余未压缩的会保存在属性 unconsumed_tail 中,未指定则一次解压所有读入的数据
flush([length]):把剩余的输入在缓冲区内的数据全部解压缩,返回解压缩后的字符串,length 指定输出缓冲区的初始大小
copy():拷贝一个 Decompression 对象,可以保存解压中途的一个状态

2.3 对象属性

unused_data:保存了还没被解压的数据,只有完全解压完了,它才会变成空字符串
unconsumed_tail:保存了上次 decompress 由于超过指定的 max_length 而没有解压完的数据,所以一定要再调用 decompress 把它完全解压完

最新文章

  1. IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
  2. .NET中STAThread和MTAThread
  3. js动态的把左边列表添加到右边,可删除。
  4. CSS动画控制器
  5. sql注入在线检測(sqlmapapi)
  6. OpenJudge 2680 化验诊断 C++
  7. webrtc学习———记录二:canvas学习
  8. python字符串格式化 %操作符 {}操作符---总结
  9. .Net平台-MVP模式再探(二)
  10. hashcode-equals方法
  11. 【线段树】【BZOJ1798】【AHOI2009】维护序列
  12. 【转】Android播放音频MediaPlayer的几种方式介绍
  13. NOI-OJ 1.13 ID:34 确定进制
  14. 【Leetcode】无重复字符的最长子串
  15. Day2:html和css
  16. Python 基础之----网络编程
  17. Hadoop学习笔记之六:HDFS功能逻辑(2)
  18. 第一个python程序--hello,world
  19. Mysql 之多实例 安装以及配置
  20. 安装Hive-0.10.0-CDH4.5.0所遇异常

热门文章

  1. retrofit2 不创建对象直接返回字符串
  2. Java - TreeMap源码解析 + 红黑树
  3. 十分钟搞定mac下的phpstorm增加xdebug调试
  4. 如何启动一个Vue3.x项目
  5. JavaScript--事件入门(24)
  6. SVG生成字体图标详解
  7. 使用ECharts画K线图
  8. python乐观锁、悲观锁
  9. drupal7创建自定义的panels布局
  10. 火狐hr标签的兼容性问题