《Python Cookbook 3rd》笔记(5.7):读写压缩文件
读写压缩文件
问题
你想读写一个 gzip 或 bz2 格式的压缩文件。PS: zip格式的用zipfile模块
解法
gzip 和 bz2 模块可以很容易的处理这些文件。两个模块都为 open() 函数提供了另外的实现来解决这个问题。比如,为了以文本形式读取压缩文件,可以这样做:
# gzip compression
import gzip
with gzip.open('somefile.gz', 'rt') as f:text = f.read()# bz2 compression
import bz2
with bz2.open('somefile.bz2', 'rt') as f:text = f.read()
类似的,为了写入压缩数据,可以这样做:
# gzip compression
import gzip
with gzip.open('somefile.gz', 'wt') as f:f.write(text)# bz2 compression
import bz2
with bz2.open('somefile.bz2', 'wt') as f:f.write(text)
如上,所有的 I/O 操作都使用文本模式并执行 Unicode 的编码/解码。类似的,如果你想操作二进制数据,使用 rb 或者 wb 文件模式即可。
讨论
大部分情况下读写压缩数据都是很简单的。但是要注意的是选择一个正确的文件模式是非常重要的。如果你不指定模式,那么默认的就是二进制模式,如果这时候程序想要接受的是文本数据,那么就会出错。 gzip.open() 和 bz2.open() 接受跟内置的open() 函数一样的参数,包括 encoding, errors, newline 等等。
当写入压缩数据时,可以使用 compresslevel 这个可选的关键字参数来指定一个压缩级别。比如:
with gzip.open('somefile.gz', 'wt', compresslevel=5) as f:f.write(text)
默认的等级是 9,也是最高的压缩等级。等级越低性能越好,但是数据压缩程度也越低。
最后一点, gzip.open() 和 bz2.open() 还有一个很少被知道的特性,它们可以作用在一个已存在并以二进制模式打开的文件上。比如,下面代码是可行的:
import gzip
f = open('somefile.gz', 'rb')
with gzip.open(f, 'rt') as g:text = g.read()
这样就允许 gzip 和 bz2 模块可以工作在许多类文件对象上,比如套接字,管道和内存中文件等。
《Python Cookbook 3rd》笔记(5.7):读写压缩文件相关推荐
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- python读写压缩文件使用gzip和bz2
python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- python读压缩文件内容_Python读写压缩文件的方法
问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
最新文章
- 因一个计算机故障而“停工”!观测宇宙 30 多年的哈勃太空望远镜还能坚持多久?...
- 史上最全的正则表达式
- idea无法搜索插件问题解决
- wps文字退格会删掉文字_WPS第二行文字前面有大量空白,按退格不会动,只是把上一行末尾的字去掉。...
- 纯javascript实现pdf签名_Mac最强PDF编辑工具
- 洛谷 - P2770 航空路线问题(最大费用最大流+路径打印)
- import lombok 报错_Android上使用Lombok和set、get方法告别
- 第一个一千行总结-数据结构C复习--知识点总结1--一到四章
- [导入]基于Web的B/S结构实时监控系统[转]
- 删除数据oracle,oracle删除数据
- 如何理解“KISS 原则”?
- 【信号处理】语音时域频域频谱图分析含Matlab源码
- C语言每日一练——第118天:百钱百鸡问题
- 小爬虫爬起点中文网收藏榜
- Python彩色图片转成黑白图片
- Sping IOC 理解(转)
- 傻妞对接TG/监控变量国内国外机视频教程 6.16
- 疫情已经结束,快递行业现状如何
- 树莓派(RaspberryPI 3)用作HP LaserJet P1007的打印机服务器
- 基于OpenLayer的室内地图前端设计开发
热门文章
- 一个网络资深者发起的思考
- 串口通讯编程一日通1(整合资料) .
- 安徽大学计算机考研学硕2019初试单科线,安徽大学2019年考研复试分数线已公布...
- arcgis选出点规定范围的面
- 【转】深入浅出理解有限状态机
- 【转】应用架构之道:分离业务逻辑和技术细节
- 【转】注册Azure AD 2.0 应用程序
- 第十三节:Lambda、linq、SQL的相爱相杀(2)
- 如何将C语言翻译成汇编语言,如何把汇编语言转换成C语言
- 静物摄影用光技巧_摄影技巧:摄影如何用光?摄影大师总结的10点,非常受用!...