Python bz2模块

Python bz2模块

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

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

open()函数

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

write()函数

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

read()函数

当以读取模式打开时,该函数读取并返回未经压缩的数据。

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

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

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

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

这个bz2模块还定义了BZ2File类。它的对象根据构造函数的mode参数充当压缩器和解压器。

BZ2File()方法

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

BZ2Compressor()方法

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

flush()方法

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

BZ2Decompressor()方法

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

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

import bz2
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()

compressedobj=d1+d2+d3+d4
f.write(compressedobj)
f.close()

使用BZ2Decompressor类进行解压缩。

obj=bz2.BZ2Decompressor()
f=bz2.open("test.bz2", "rb")
data=f.read()
obj.decompress(data)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程