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 把它完全解压完

Python2.7-zlib的更多相关文章

  1. 安装zlib的过程(Compression requires the (missing) zlib module)(Python2.6升级为2.7出现的问题)

    觉得有必要把解决问题的过程写下来 1,因为要安装flask,所以安装pip,所以安装setuptools,所以安装zlib.(具体过程http://www.cnblogs.com/aiyr/p/726 ...

  2. Linux下安装python-2.7 先zlib

    2018-04-25 发布 Linux下安装python-2.7  python 1.1k 次阅读  ·  读完需要 25 分钟 1 安装依赖的库 yum -y install python-deve ...

  3. Centos6.5 python2.7连接mysql数据库

    1.环境是centos6.5 32位系统,python版本是2.7.12,mysql版本是5.5.22.准备好所需压缩包,MySQL-python-1.2.4b4.tar.gz  pip-6.0.7. ...

  4. linux 安装 python2.7

    若新安装虚拟机,或者新装linux系统.需安装gcc等yum -y install gcc gcc-c++ autoconf automake cmake ntp rsync ssh vim  yum ...

  5. centos6升级python2.7

    #下载python #wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 #安装支持https yum install opens ...

  6. centos python2.6升级到2.7 还有单独的python3.5环境

    查看python版本 #python -V Python 1.下载Python-2.7.3 #wget http://python.org/ftp/python/2.7.3/Python-2.7.3. ...

  7. Windows下使用scapy+python2.7实现对pcap文件的读写操作

    scapy在linux环境中对pcap文件进行操作非常方便,但在windows下,特别是在python2.7环境下却会碰到各种各样的依赖包无法使用的问题,最明显的可能就属dnet和pcap的pytho ...

  8. python 安装 setuptools Compression requires the (missing) zlib module 的解决方案

    背景: 虚拟机centos下安装python辅助工具 setuptools报错,错误信息大概如下: Traceback (most recent call last): File "setu ...

  9. CentOS 6.X更新Python2.7.x版本 安装pip

    在安装新版之前安装 先安装bz2.zlib,执行下列代码进行安装 yum install -y zlib-devel bzip2-devel xz-libs wget openssl openssl- ...

  10. CentOS6下编译安装Python2.7.6方法

    关于在CentOS6下编译安装Python2.7.6的方法非常的多了,小编以前也介绍过相关的文章了,下面一聚教程小编再来为各位介绍一下吧,希望文章能帮助到各位.   CentOS下面Python在升级 ...

随机推荐

  1. 存储过程TYPE类型参数调试

    当我们写完一段存储过程后,必然需要调试运行一下写的代码是否能成功运行,当参数是字符,数字或日期时,可以直接在测试窗口输入值.但是类型如果是定义好的TYPE,就无法简单的输入. 一.自定义TYPE TY ...

  2. ionic1 项目微信支付

    使用的插件参照地址:https://github.com/xu-li/cordova-plugin-wechat:(这里包含微信登录,微信分享和微信支付) 插件安装 cordova plugin ad ...

  3. Git执行过程中出现问题及解决方法

    not-fast-forward https://help.github.com/articles/dealing-with-non-fast-forward-errors/

  4. .NET(C#)使用Serialize、Deserialize序列和反序列化XML文档

    本文给大家分享一下C#操作(读取.写入)XML文档的实用方法,即用.NET本身提供的Deserialize和Serialize进行反序列化和序列化XML文档.这种方法主要是对比较规范的XML文档进行操 ...

  5. python-docx 使用教程

    快速入门 入门python-docx很容易.让我们来看一下基础知识. 官方文档地址请点击 打开文档 你需要的第一件事是工作的文档.最简单的方法是: from docx import Document ...

  6. SQL Server全文搜索

    SQL Server全文搜索 看这篇文章之前请先看一下下面我摘抄的全文搜索的MSDN资料,基本上MSDN上关于全文搜索的资料的我都copy下来了 并且非常认真地阅读和试验了一次,并且补充了一些SQL语 ...

  7. python容错

    #try: except: else: #为什么叫容错呢,先说说错误,这里说的错误并不是因为马虎或者什么原因在脚本中留下的bug,这个不能容掉,所谓容掉就是略过这个错误,要在测试时候发现并修正,需要容 ...

  8. AD RMS企业文件版权管理

    AD RMS (AD权限管理服务)能够确保企业内部数字文件的机密性,例如,用户即使有权限读取受保护的文件,但是如果未被许可,就无法复制与打印该文件. AD RMS概述 虽然可以通过NTFS权限来设置用 ...

  9. 远程桌面web连接

      我们可以利用web浏览器搭配远程桌面技术来连接远程计算机,这个功能被称为远程桌面web连接(Remote desktop web connection),要享有此功能,请先在网络上一台window ...

  10. round()和trunc()用法

    round(数字 | 列 保留小数的位数):四舍五入. select a.*,round(s),round(-s) from bqh4 a trunc(数字 | 列 保留小数的位数):舍弃指定位置的内 ...