Python读写压缩文件的方法

 更新时间:2020年07月30日 15:25:17   作者:David Beazley  
这篇文章主要介绍了Python读写压缩文件的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

问题

你想读写一个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如何去除字符串中不需要的字符

    这篇文章主要介绍了Python如何去除字符串中不需要的字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python Flask-web表单使用详解

    Python Flask-web表单使用详解

    这篇文章主要为大家详细介绍了Python Flask-web表单的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • python数据可视化使用pyfinance分析证券收益示例详解

    python数据可视化使用pyfinance分析证券收益示例详解

    这篇文章主要为大家介绍了python数据可视化使用pyfinance分析证券收益的示例详解及pyfinance中returns模块的应用,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • 使用Python实现简单的学生成绩管理系统

    使用Python实现简单的学生成绩管理系统

    这篇文章主要为大家详细介绍了Python实现学生成绩管理系统,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • python自动化之如何利用allure生成测试报告

    python自动化之如何利用allure生成测试报告

    这篇文章主要给大家介绍了关于python自动化之如何利用allure生成测试报告的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • python3 使用函数求两个数的和与差

    python3 使用函数求两个数的和与差

    这篇文章主要介绍了python3 使用函数求两个数的和与差,具有很好的参考价值,希望对大家有所帮助。
    2021-05-05
  • Python单例模式实例分析

    Python单例模式实例分析

    这篇文章主要介绍了Python单例模式,以实例形式分析了Python单例模式的具体使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • Python3.5实现的三级菜单功能示例

    Python3.5实现的三级菜单功能示例

    这篇文章主要介绍了Python3.5实现的三级菜单功能,涉及Python针对json格式数据的读取、遍历、查找、判断等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • python的环境conda简介

    python的环境conda简介

    conda是一个包,依赖和环境管理工具,适用于多种语言,如: Python, R, Scala, Java, Javascript, C/ C++, FORTRAN,这篇文章主要介绍了python的环境conda简介,需要的朋友可以参考下
    2022-09-09
  • 基于Python爬取搜狐证券股票过程解析

    基于Python爬取搜狐证券股票过程解析

    这篇文章主要介绍了基于Python爬取搜狐证券股票过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论