python用模块zlib压缩与解压字符串和文件的方法


Posted in Python onDecember 16, 2016

python中zlib模块是用来压缩或者解压缩数据,以便保存和传输。它是其他压缩工具的基础。下面来一起看看python用模块zlib压缩与解压字符串和文件的方法。话不多说,直接来看示例代码。

例子1:压缩与解压字符串

import zlib
message = 'abcd1234'
compressed = zlib.compress(message)
decompressed = zlib.decompress(compressed)

print 'original:', repr(message)
print 'compressed:', repr(compressed)
print 'decompressed:', repr(decompressed)

结果

original: 'abcd1234'
compressed: 'x\x9cKLJN1426\x01\x00\x0b\xf8\x02U'
decompressed: 'abcd1234'

例子2:压缩与解压文件

import zlib
def compress(infile, dst, level=9):
 infile = open(infile, 'rb')
 dst = open(dst, 'wb')
 compress = zlib.compressobj(level)
 data = infile.read(1024)
 while data:
  dst.write(compress.compress(data))
  data = infile.read(1024)
 dst.write(compress.flush())

def decompress(infile, dst):
 infile = open(infile, 'rb')
 dst = open(dst, 'wb')
 decompress = zlib.decompressobj()
 data = infile.read(1024)
 while data:
  dst.write(decompress.decompress(data))
  data = infile.read(1024)
 dst.write(decompress.flush())

if __name__ == "__main__":
 compress('in.txt', 'out.txt')
 decompress('out.txt', 'out_decompress.txt')

结果

生成文件

out_decompress.txt out.txt

问题——处理对象过大异常

>>> import zlib
>>> a = '123'
>>> b = zlib.compress(a)
>>> b
'x\x9c342\x06\x00\x01-\x00\x97'
>>> a = 'a' * 1024 * 1024 * 1024 * 10
>>> b = zlib.compress(a)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
OverflowError: size does not fit in an int

总结

以上就是关于python模块zlib压缩与解压的全部内容,希望本文的内容对大家学习或者使用python能有一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
使用Python获取Linux系统的各种信息
Jul 10 Python
python简单读取大文件的方法
Jul 01 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
Django中使用Celery的教程详解
Aug 24 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
python 实现图像快速替换某种颜色
Jun 04 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
Python中requests做接口测试的方法
May 30 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 #Python
python常见的格式化输出小结
Dec 15 #Python
python中子类继承父类的__init__方法实例
Dec 15 #Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 #Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 #Python
利用python获取某年中每个月的第一天和最后一天
Dec 15 #Python
python中快速进行多个字符替换的方法小结
Dec 15 #Python
You might like
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
加热夹克:RAVEAN
2018/10/19 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
《记承天寺夜游》教学反思
2014/02/16 职场文书
爱心捐助倡议书
2014/05/19 职场文书
关于迟到的检讨书
2015/05/06 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python