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正则表达式中的括号匹配问题
Dec 14 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
python 容器总结整理
Apr 04 Python
python如何为创建大量实例节省内存
Mar 20 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
Python+Xlwings 删除Excel的行和列
Dec 19 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
基于Python实现一个春节倒计时脚本
Jan 22 Python
对象析构函数__del__在Python中何时使用
Mar 22 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数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
Javascript 作用域使用说明
2009/08/13 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python结合API实现即时天气信息
2016/01/19 Python
Python操作csv文件实例详解
2017/07/31 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
优秀村官事迹材料
2014/01/10 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers