在线文档教程

bz2

bz2 — Compression compatible with bzip2

2.3版本的新功能。

该模块为bz2压缩库提供了一个全面的界面。它实现了一个完整的文件接口,一次性(解除)压缩功能,以及用于顺序(反)压缩的类型。

以下是bz2模块提供的功能摘要:

  • BZ2File类实现一个完整的文件接口,包括readline()readlines()writelines()seek(),等;

  • BZ2File类实现模拟seek()支持;

  • BZ2File 类实现通用换行支持;

  • BZ2File 类使用从文件对象借用的readahead算法提供优化的行迭代;

  • BZ2CompressorBZ2Decompressor类支持的顺序(反)压缩;

  • 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.顺序(反)压缩

顺序压缩和解压缩使用类BZ2CompressorBZ2Decompressor

class bz2.BZ2Compressor([compresslevel])

创建一个新的压缩机对象。这个对象可以用来顺序压缩数据。如果您想一次压缩数据,请改用该compress()功能。的compresslevel参数,如果给定的,必须之间的数字19; 默认是9

compress(data)

向压缩机对象提供更多数据。它会尽可能地返回压缩数据块。当您完成提供数据压缩时,调用该flush()方法来完成压缩过程,并返回内部缓冲区中留下的内容。

flush()

完成压缩过程并返回内部缓冲区中留下的内容。调用此方法后,您不得使用压缩器对象。

class bz2.BZ2Decompressor

创建一个新的解压缩器对象。该对象可用于顺序解压缩数据。如果您想一次性解压缩数据,请改用该decompress()功能。

decompress(data)

向解压缩器对象提供更多数据。它会尽可能地返回大量的解压缩数据。如果您在找到流结束后尝试解压缩数据,EOFError将会被提升。如果在数据流结束后发现任何数据,它将被忽略并保存在unused_data属性中。

3.一次压缩

通过compress()decompress()功能提供一次性压缩和解压缩。

bz2.compress(data[, compresslevel])

一次压缩数据。如果要按顺序压缩数据,请使用BZ2Compressor替代的实例。的compresslevel参数,如果给定的,必须之间的数字19; 默认是9

bz2.decompress(data)

一次性解压缩数据。如果要按顺序解压缩数据,请使用BZ2Decompressor替代的实例。