bz2
bz2 — Compression compatible with bzip2
2.3版本的新功能。
该模块为bz2压缩库提供了一个全面的界面。它实现了一个完整的文件接口,一次性(解除)压缩功能,以及用于顺序(反)压缩的类型。
以下是bz2模块提供的功能摘要:
BZ2File
类实现一个完整的文件接口,包括readline()
,readlines()
,writelines()
,seek()
,等;
BZ2File
类实现模拟seek()
支持;
BZ2File
类实现通用换行支持;
BZ2File
类使用从文件对象借用的readahead算法提供优化的行迭代;
- 由
BZ2Compressor
和BZ2Decompressor
类支持的顺序(反)压缩;
- 由
compress()
和decompress()
功能支持的一次性(去)压缩;
- 线程安全使用单独的锁定机制。
1.(解压缩)文件
处理压缩文件是由BZ2File
课程提供的。
class bz2.BZ2File(filename[, mode[, buffering[, compresslevel]]])
打开一个bz2文件。模式可以是'r'
或者'w'
,用于阅读(默认)或写作。当打开写入时,如果该文件不存在,则该文件将被创建,否则将被截断。如果给出缓冲
,0
意味着无缓冲
,而较大的数字指定缓冲
区大小; 默认是0
。如果给出了压缩
级别,它必须是介于1
和之间的数字9
; 默认是9
。添加'U'
到模式以通用换行模式打开文件进行输入。任何以输入文件结尾的行将被视为'\n'
Python中的行。另外,如此打开的文件将获得该属性newlines
; 该属性的值是一个None
(没有新行读还), ,,'\r''\n''\r\n'
或者包含所有可见的新行类型的元组。通用换行符仅在阅读时可用。实例以与正常file
实例相同的方式支持迭代。
BZ2File
支持该with
声明。
在版本2.7中进行了更改:with
添加了对语句的支持。
注意
该类不支持包含多个流的输入文件
(例如由pbzip2
工具生成的文件
)。当读取这样的输入文件
时,只有第一个流将被访问。如果您需要支持多流文件
,请考虑使用第三方bz2file
模块(可从PyPI获得)。这个模块提供了Python 3.3的BZ2File
类的后端,它支持多流文件
。
close()
关闭文件。将数据属性设置closed
为true。封闭的文件不能用于进一步的I / O操作。close()
可能会不止一次地被调用。
read([size])
读取大多数大小的
未压缩字节,以字符串形式返回。如果size
参数为负值或省略,请阅读,直到达到EOF。
readline([size])
从文件中返回下一行,作为字符串保留换行符。非负大小
参数限制了返回的最大字节数(然后可能会返回一个不完整的行)。在EOF处返回空字符串。
readlines([size])
返回读取的行列表。如果给出可选的大小
参数,则返回的行中的总字节数的近似范围。
xreadlines()
为了向后兼容。BZ2File
对象现在包含之前在xreadlines
模块中执行的性能优化。
自从版本2.3开始不推荐使用:这仅适用于与file
对象上的此名称的方法的兼容性,不建议使用此名称。for line in file
改为使用。
seek(offset[, whence])
移动到新的文件位置。参数偏移量是一个字节数。可选参数whence缺省为os.SEEK_SET或0(从文件起始位置偏移; offset应该是>= 0); 其它值os.SEEK_CUR或1(移动相对于当前位置;偏移可为正或负),和os.SEEK_END或2(相对移动到文件结尾的;偏移通常是负的,虽然许多平台允许寻求超出文件的结尾)。
请注意,模拟寻找bz2文件,并根据参数操作可能会非常缓慢。
tell()
返回当前文件的位置,一个整数(可能是一个长整数)。
write(data)
将字符串数据
写入文件。请注意,由于缓冲,close()
可能需要在磁盘上的文件反映写入的数据
之前。
writelines(sequence_of_strings)
将字符串序列写入文件。请注意,不添加换行符。该序列可以是任何可生成字符串的可迭代对象。这相当于为每个字符串调用write()。
2.顺序(反)压缩
顺序压缩和解压缩使用类BZ2Compressor
和BZ2Decompressor
。
class bz2.BZ2Compressor([compresslevel])
创建一个新的压缩机对象。这个对象可以用来顺序压缩数据。如果您想一次压缩数据,请改用该compress()
功能。的compresslevel
参数,如果给定的,必须之间的数字1
和9
; 默认是9
。
compress(data)
向压缩机对象提供更多数据。它会尽可能地返回压缩数据块。当您完成提供数据压缩时,调用该flush()
方法来完成压缩过程,并返回内部缓冲区中留下的内容。
flush()
完成压缩过程并返回内部缓冲区中留下的内容。调用此方法后,您不得使用压缩器对象。
class bz2.BZ2Decompressor
创建一个新的解压缩器对象。该对象可用于顺序解压缩数据。如果您想一次性解压缩数据,请改用该decompress()
功能。
decompress(data)
向解压缩器对象提供更多数据。它会尽可能地返回大量的解压缩数据。如果您在找到流结束后尝试解压缩数据,EOFError
将会被提升。如果在数据流结束后发现任何数据,它将被忽略并保存在unused_data
属性中。
3.一次压缩
通过compress()
和decompress()
功能提供一次性压缩和解压缩。
bz2.compress(data[, compresslevel])
一次压缩数据
。如果要按顺序压缩数据
,请使用BZ2Compressor
替代的实例。的compresslevel
参数,如果给定的,必须之间的数字1
和9
; 默认是9
。
bz2.decompress(data)
一次性解压缩数据
。如果要按顺序解压缩数据
,请使用BZ2Decompressor
替代的实例。