读写压缩文件(gzip,bz2)

问题
你想读写一个 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 文件模式即可.

当写入压缩数据时,可以使用 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 模块可以工作在许多类文件对象上,比如套接字,管道和内存中文件等.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 压缩文件的用途与技术 压缩文件使文件大小减低,降低磁盘使用量。还可以分成数个小型文件,方便携带。常用于网络数据传输...
    taosilly阅读 1,560评论 0 1
  • 转载别人的文章,nginx调优。链接如下:http://blog.csdn.net/xifeijian/artic...
    Alex_ct阅读 1,065评论 0 1
  • 5.1 读写文本数据 你需要读写各种不同编码的文本数据,比如ASCII,UTF-8或UTF-16编码等。 使用带有...
    czm123阅读 449评论 0 1
  • 一、文件与文件系统的打包与压缩 压缩技术的原理:我们知道计算机中存储的单位最小的是bit,而我们常用的是byte,...
    ivan_cq阅读 251评论 0 0
  • 任何程序都需要处理输入和输出。本章节介绍了处理各种不同类型文件时的惯用方法,包括文本和二进制人间的处理,文件的编码...
    overad阅读 314评论 0 0

友情链接更多精彩内容