bz2支持bzip2压缩(3)Python数据压缩和存档(必读进阶Python教程)(参考资料)
该模块提供了一个使用bzip2压缩算法压缩和解压缩数据的综合界面。
该bz2模块包含:
- 用于读写压缩文件的
open()函数和BZ2File类。 - 在
BZ2Compressor和BZ2Decompressor类增量(DE)压缩。 - 该
compress()和decompress()功能一次性的(de)压缩。
可以安全地从多个线程访问此模块中的所有类。
(De)压缩文件
bz2.open(filename,mode =’r’,compresslevel = 9,encoding = None,errors = None,newline = None )- 以二进制或文本模式打开bzip2压缩文件,返回文件对象。
与构造函数一样
BZ2File,filename参数可以是实际文件名(一个str或bytes对象),也可以是要读取或写入的现有文件对象。所述模式参数可以是任何的
'r','rb','w','wb','x','xb','a'或'ab'二进制模式,或者'rt','wt','xt',或'at'为文本模式。默认是'rb'。所述compresslevel参数是从1到9的整数,作为用于
BZ2File构造函数。对于二进制模式,此函数等效于
BZ2File构造函数:。在这种情况下,不得提供编码,错误和换行参数。BZ2File(filename, mode, compresslevel=compresslevel)对于文本模式,将
BZ2File创建一个对象,并将其包装在io.TextIOWrapper具有指定编码,错误处理行为和行结尾的 实例中。版本3.3中的新功能。
改变在3.4版本:将
'x'加入(独家创作)模式。在版本3.6中更改:接受类似路径的对象。
- class
bz2.BZ2File(filename,mode =’r’,buffering = None,compresslevel = 9 ) - 以二进制模式打开bzip2压缩文件。
如果filename是a
str或bytesobject,请直接打开指定的文件。否则,filename应该是一个文件对象,用于读取或写入压缩数据。所述模式参数可以是
'r'用于读取(默认值),'w'用于改写,'x'专用创建,或'a'为附加。这些可以等价表示为'rb','wb','xb'和'ab'分别。如果filename是文件对象(而不是实际文件名),则模式
'w'不截断文件,而是等效于'a'。该缓冲参数将被忽略。它的使用已被弃用。
如果mode是
'w'or'a',则compresslevel可以是介于1和9指定压缩级别之间的数字 :1产生最小压缩,9(默认)产生最大压缩。如果模式是
'r',输入文件可以是多个压缩数据流的连接。BZ2File提供io.BufferedIOBase除了detach()和之外的所有成员truncate()。with支持迭代和语句。BZ2File还提供以下方法:peek([ n ] )- 在不提升文件位置的情况下返回缓冲数据。将返回至少一个字节的数据(除非在EOF处)。返回的确切字节数未指定。
注意
虽然调用
peek()不会改变文件的位置BZ2File,但它可能会改变底层文件对象的位置(例如,如果BZ2File是通过传递文件名的文件对象构造的)。版本3.3中的新功能。
版本3.1中已更改:
with添加了对语句的支持。改变在3.3版本:该
fileno(),readable(),seekable(),writable(),read1()以及readinto()加入方法。在版本3.3中更改:添加了对文件名为文件对象而不是实际文件名的支持。
改变在3.3版本:将
'a'添加(追加)模式下,读取多流文件的支持一起。改变在3.4版本:将
'x'加入(独家创作)模式。在版本3.5中更改:该
read()方法现在接受参数None。在版本3.6中更改:接受类似路径的对象。
增量(de)压缩
- class
bz2.BZ2Compressor(compresslevel = 9 ) - 创建一个新的压缩器对象。该对象可用于递增地压缩数据。对于单次压缩,请改用该
compress()功能。compresslevel,如果给定,则必须是
1和之间的数字9。默认是9。compress(数据)- 向压缩器对象提供数据。如果可能,返回一块压缩数据,否则返回空字节串。
完成向压缩器提供数据后,请调用该
flush()方法以完成压缩过程。
flush()- 完成压缩过程。返回内部缓冲区中保留的压缩数据。
调用此方法后,可能无法使用压缩器对象。
- 类
bz2.BZ2Decompressor - 创建一个新的解压缩器对象。该对象可用于递增地解压缩数据。对于单次压缩,请改用该
decompress()功能。注意
与
decompress()和不同,此类不透明地处理包含多个压缩流的输入BZ2File。如果需要使用解压缩多流输入BZ2Decompressor,则必须为每个流使用新的解压缩程序。decompress(data,max_length = -1 )- 解压缩数据(类似字节的对象),将未压缩的数据作为字节返回。一些数据可以在内部缓冲,以便在以后的调用中使用
decompress()。返回的数据应与之前调用的输出连接decompress()。如果max_length是非负的,则返回 解压缩数据的最多max_length个字节。如果达到此限制并且可以生成更多输出,则该
needs_input属性将设置为False。在这种情况下,下一个呼叫到decompress()可以提供数据作为b''以获得更多的输出。如果所有输入数据都已解压缩并返回(因为它小于max_length个字节,或者因为 max_length为负数),则该
needs_input属性将设置为True。在达到流结束后尝试解压缩数据会引发EOFError。在流结束后找到的任何数据都将被忽略并保存在
unused_data属性中。版本3.5中已更改:添加了max_length参数。
eofTrue如果已达到流末端标记。版本3.3中的新功能。
unused_data- 在压缩流结束后找到的数据。
如果在到达流结束之前访问此属性,则其值将为
b''。
needs_inputFalse如果该decompress()方法可以在需要新的未压缩输入之前提供更多解压缩数据。版本3.5中的新功能。
一次性(反)压缩
bz2.compress(data,compresslevel = 9 )- 压缩数据。
compresslevel,如果给定,则必须是
1和之间的数字9。默认是9。对于增量压缩,请使用
BZ2Compressor替代。
bz2.decompress(数据)- 解压缩数据。
如果数据是多个压缩流的串联,则解压缩所有流。
对于增量解压缩,请使用
BZ2Decompressor替代。版本3.3中已更改:添加了对多流输入的支持。