问题

你想读写一个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()函数一样的参数, 包括 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读写压缩文件的方法的详细内容,更多关于Python 读写压缩文件的资料请关注我们其它相关文章!

本文标题: Python读写压缩文件的方法

本文地址: http://www.cppcns.com/jiaoben/python/328872.html

python读压缩文件内容_Python读写压缩文件的方法相关推荐

  1. python读txt很大_Python读写txt文件

    python读写txt文件 准备原始txt数据 3.14159265358979323846264338327950288419716939937510582097494459230781640628 ...

  2. python修改文件内容_python批量修改文件夹及其子文件夹下的文件内容

    前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据 ...

  3. python os读取文件内容_python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  4. python修改zip文件内容_python操作zip文件

    转自: 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # 默认模式r,读 az ...

  5. python 读excel pandas_Python使用Pandas读写EXCEL文件教程

    欢迎,来自IP地址为:140.250.89.180 的朋友 教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容. 什么是Excel Excel  是微软出品的和款办公软件 ...

  6. python读取xml文件内容_python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...

  7. python读取docx文件出错_Python读写docx文件的方法

    这篇文章主要介绍了关于Python读写docx文件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Python读写word文档有现成的库可以处理.我这里采用 python-doc ...

  8. python替换文件内容_Python实现替换文件中指定内容的方法

    本文实例讲述了Python实现替换文件中指定内容的方法.分享给大家供大家参考,具体如下: 这里使用python编写的程序,实现如下功能:将文件中的指定子串 修改为 另外的子串 编写的python程序, ...

  9. python读excel并写入_Python读取Excel文件并写入数据库

    好方法最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而 ...

最新文章

  1. GitHub超4.1万星,最全Python入门算法来了
  2. Hadoop生态hive(四)数据类型
  3. 美国在理论计算机科学的研究重视,清华麻省理工香港中文联建理论计算机科学研究中心...
  4. mysql5性能比较_MySQL 5.7&MySQL 8.0 性能对比
  5. JavaWeb【Velocity】
  6. 光学定位与追踪技术_从显微镜到显纳镜:小于2nm定位精度光学显微镜
  7. chrome 插件开发各种功能demo_Chrome扩展开发-编写一个浏览器插件
  8. 基于SSM的个人健康管理系统
  9. 达思SQL数据库修复软件升级至 5.0 版本(重要升级支持修复压缩格式的备份文件)
  10. 10个可以为你的网页设计提供创造灵感的设计资源网站
  11. 惠普服务器优盘安装系统蓝屏,惠普u盘装系统出现蓝屏现象怎么解决
  12. LeetCode 2300. 咒语和药水的成功对数
  13. C语言协程库async
  14. 理解 Mach-O 并提高程序启动速度
  15. 坎坷道路-程序员必须先让自己的心灵强大起来
  16. VM虚拟机双网卡配置
  17. 【容器云】Calico 组件架构
  18. 三芯和四芯音频接口转换
  19. WEB前端大作业-汽车保养服务中心响应式网页模板(HTML JS CSS)
  20. 乐华v56与v59的区别_乐华V59-5键通用程序(通用板)驱动程序

热门文章

  1. 10 岁研究计算机,电脑神童“不务正业”的技术路
  2. Netstars CTO 陈斌:技术管理的两种思路
  3. 架构设计:服务自动化部署和管理流程
  4. 算法我也不知道有没有下一个---一个题目的开端(索引堆与图)
  5. Thinkphp5 请求报错
  6. 腾讯IVWEB前端工程化工具feflow思考与实践
  7. 前端之DIV+CSS布局
  8. 盒子模型与DOCTYPE
  9. HDU-2332 机器人的舞蹈 递推
  10. 【原】获取数据库(SQL SERVER 2005)的所有信息 Get all database information from SQL Server 2005 测试通过...