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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
Python3 处理JSON的实例详解
Oct 29 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
Django之无名分组和有名分组的实现
Apr 16 Python
Python3中函数参数传递方式实例详解
May 05 Python
python解释器spython使用及原理解析
Aug 24 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 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
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php的curl封装类用法实例
2014/11/07 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
asp批量修改记录的代码
2008/06/25 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
python requests 使用快速入门
2017/08/31 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
Django xadmin安装及使用详解
2020/10/26 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
优质的学校老师推荐信
2013/10/28 职场文书
环保建议书作文300字
2015/09/14 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
asyncio异步编程之Task对象详解
2022/03/13 Python