Python 对 bzip2 压缩 (bz2) 的支持


bzip2 是一种用于文件压缩和解压缩的开源算法。Python 的 bz2 模块提供了以编程方式实现 bzip2 算法的功能。

open() 函数是此模块的主要接口。

Open()

此函数打开一个 bzip2 压缩文件并返回一个文件对象。该文件可以以二进制/文本模式打开,并具有读/写权限。该函数根据压缩级别参数(1 到 9 之间)执行压缩。

write()

当文件以 'w' 或 'wb' 模式打开时,此函数可用于文件对象。在二进制模式下,它将压缩的二进制数据写入文件。在普通文本模式下,文件对象被包装在 TetIOWrapper 对象中以执行编码。

**read()** − 当以读取模式打开时,此函数读取它并返回解压缩的数据。

以下代码将压缩数据写入 bzip2 文件。

>>> f = bz2.open("test.bz2", "wb")
>>> data = b'Welcome to TutorialsPoint'
>>> f.write(data)
>>> f.close()

这将在当前目录中创建 test.bz2 文件。任何解压缩工具都将在其中显示一个“test”文件。要从该 test.bz2 文件读取解压缩的数据,请使用以下代码。

>>> f = bz2.open("test.bz2", "rb")
>>> data=f.read()
>>> data
b'Welcome to TutorialsPoint'

bz2 模块还定义了 BZ2File 类。其对象充当压缩器和解压缩器,具体取决于构造函数对 mode 参数。

BZ2File()

这是构造函数。与 open() 函数一样,需要 file 和 mode 参数。压缩级别默认为 9,可以是 1 到 9 之间。

BZ2Compressor()

此函数返回增量压缩器类的对象。对该类中 compress() 方法的每次调用都会返回一段压缩数据。可以将多个块连接在一起,最后写入 bzip2 压缩文件。

flush()

此方法清空缓冲区并将其中的数据块返回以附加到压缩对象。

BZ2Decompressor()

此函数返回增量解压缩器的对象。解压缩数据的各个块与已刷新数据连接在一起,形成解压缩数据。

以下示例首先压缩列表对象中的每个项目,并将连接的字节对象写入文件。数据由 BZ2Decompressor 对象检索。

>>> data = [b'Hello World', b'How are you?', b'welcome to Python']
>>> obj = bz2.BZ2Compressor()
>>> f = bz2.open("test.bz2", "wb")
>>> d1 = obj.compress(data[0])
>>> d2 = obj.compress(data[1])
>>> d3 = obj.compress(data[2])
>>> d4 = obj.flush()
>>> d1,d2,d3,d4
(b'', b'', b'', b'BZh91AY&SYS\x9a~\x99\x00\x00\x03\x1f\x80@\x00\x00\x00\x80@@\x80.G\x96\xa0 \x00!\xa8\xd0\x06\x9a6\x90\xa6LL\x83#\x18\x1d\x83\xee^]\x1e|\xa9\xddgu\x15G/\x1a\x8c\xd1\x90\x14\x8f\x8b\xb9"\x9c(H)\xcd?L\x80')
>>> compressedobj=d1+d2+d3+d4
>>> f.write(compressedobj)
>>> f.close()
>>> obj=bz2.BZ2DeCompressor()
>>> f=bz2.open("test.bz2", "rb")
>>> data=f.read()
>>> obj.decompress(data)
b'Hello WorldHow are you?welcome to Python'

更新于: 2020-06-26

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告