Python读写压缩文件的方法


Posted in Python onJuly 30, 2020

问题

你想读写一个gzip或bz2格式的压缩文件。

解决方案

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() 函数一样的参数, 包括 encodingerrorsnewline 等等。

当写入压缩数据时,可以使用 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读写压缩文件的方法的详细内容,更多关于Python 读写压缩文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python写的ARP攻击代码实例
Jun 04 Python
MySQL适配器PyMySQL详解
Sep 20 Python
PYTHON基础-时间日期处理小结
May 05 Python
Python中按键来获取指定的值
Mar 02 Python
python制作抖音代码舞
Apr 07 Python
python设置环境变量的作用和实例
Jul 09 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
python遍历路径破解表单的示例
Nov 21 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
Python3爬虫里关于代理的设置总结
Jul 30 #Python
Python 如何创建一个简单的REST接口
Jul 30 #Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 #Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 #Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 #Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 #Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 #Python
You might like
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
PHP函数常用用法小结
2010/02/08 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
vue写h5页面的方法总结
2019/02/12 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
在Python中使用Neo4j的方法
2019/03/14 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
十八大闭幕感言
2014/01/22 职场文书
好家长事迹材料
2014/01/23 职场文书
出纳员岗位职责风险
2014/03/06 职场文书
留学经费担保书
2014/05/12 职场文书
工程部文员岗位职责
2015/02/04 职场文书
出国留学单位推荐信
2015/03/26 职场文书