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脚本实现代码行数统计代码分享
Mar 10 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
Python中itertools的用法详解
Feb 07 Python
如何提高python 中for循环的效率
Apr 15 Python
解决pip install psycopg2出错问题
Jul 09 Python
详解anaconda离线安装pytorchGPU版
Sep 08 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php如何连接sql server
2015/10/16 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python查找目录下指定扩展名的文件实例
2015/04/01 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
python读取LMDB中图像的方法
2018/07/02 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
matplotlib实现区域颜色填充
2019/03/18 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
考试作弊检讨书大全
2014/02/18 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang