一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)

Posted AhcaoZhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)相关的知识,希望对你有一定的参考价值。

本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008


一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)

摘要

全文介绍系统内置 bz2 模块、函数、类及类的方法和属性。
它通过代码抓取并经AI智能翻译和人工校对。
是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创:AhcaoZhu大侠】

模块图

bz2
	◆io
	◆os
	◆warnings
	_compression

类关系图

bz2-class relationship

bz2-class relationship ellipsis

◆object
	_bz2.BZ2Compressor
	_bz2.BZ2Decompressor
	◆_io._IOBase
		◆_io._BufferedIOBase
			◆_io.BufferedRWPair
			◆_io.BufferedRandom
			◆_io.BufferedReader
			◆_io.BufferedWriter
			◆_io.BytesIO
			◆io.BufferedIOBase
				_compression.BaseStream
					bz2.BZ2File
		◆_io._RawIOBase
			◆_io.FileIO
			◆_io._WindowsConsoleIO
			◆io.RawIOBase
				_compression.DecompressReader

模块全展开

【bz2】

bz2, fullname=bz2, file=bz2.py

libbzip2压缩库的接口。
该模块提供了一个文件接口、用于增量压缩(解压缩)的类以及用于一次性压缩(解压缩)的函数。

统计

序号类别数量
1int3
4str6
6list1
8dict1
9module4
10class3
11function4
12builtin_function_or_method1
13residual2
14system10
15private5
16all25

常量

int

1 _MODE_CLOSED 0
2 _MODE_READ 1
3 _MODE_WRITE 3

模块

4 io

io, fullname=io, file=io.py

5 os

os, fullname=os, file=os.py

6 warnings

warnings, fullname=warnings, file=warnings.py

7 _compression

_compression, fullname=_compression, file=_compression.py

gzip, lzma和bz2模块使用的内部类

函数

8 RLock(*args, **kwargs)

RLock(*args, **kwargs), module=threading, line:75 at threading.py

返回一个新的重入锁的工厂函数。
可重入锁必须由获取它的线程释放。
一旦一个线程获得了一个可重入锁,同一个线程可以再次获得它而不会阻塞;线程每次获得它都必须释放它一次。

9 open(filename, mode=‘rb’, compresslevel=9, encoding=None, errors=None, newline=None)

open(filename, mode=‘rb’, compresslevel=9, encoding=None, errors=None, newline=None), module=bz2, line:285 at bz2.py

以二进制或文本模式打开bzip2压缩文件。
filename参数可以是一个实际的文件名(str、bytes或PathLike对象),也可以是一个可供读取或写入的现有文件对象。
mode参数可以是“r”,“rb”,“w”,“wb”,“x”,“xb”,“a”或“ab”,用于二进制模式,或“rt”,“wt”,“xt”或“at”。
默认模式为“rb”,默认压缩级别为9。
对于二进制模式,这个函数等价于BZ2File构造函数:BZ2File(filename, mode, compresslevel)。
在这种情况下,编码、错误和换行参数必须不提供。
对于文本模式,将创建一个BZ2File对象,并将其包装在io.TextIOWrapper实例,使用指定的编码、错误处理行为和行结束。

10 compress(data, compresslevel=9)

compress(data, compresslevel=9), module=bz2, line:326 at bz2.py

压缩一个数据块。
Compresslevel,如果给出,必须是1到9之间的数字。
对于增量压缩,请使用BZ2Compressor对象。

11 decompress(data)

decompress(data), module=bz2, line:337 at bz2.py

解压缩数据块。对于增量解压缩,使用BZ2Decompressor对象代替。

12 _bz2.BZ2Compressor

BZ2Compressor, _bz2.BZ2Compressor, module=_bz2, line:0 at

创建一个压缩对象,用于增量压缩数据。
compresslevel   压缩级别,取值为1到9之间的数字。对于一次性压缩,请使用compress()函数。

method

1 compress(self, *args, **kwargs)

kind=method class=BZ2Compressor objtype=method_descriptor line:20 at …-1026899380_bz2.py

向压缩机对象提供数据。
如果可能,返回一个压缩数据块,否则返回b''。
完成向压缩器提供数据后,调用flush()方法来完成压缩过程。

2 flush(self, *args, **kwargs)

kind=method class=BZ2Compressor objtype=method_descriptor line:31 at …-1026899380_bz2.py

完成压缩过程。
返回保留在内部缓冲区中的压缩数据。
在调用此方法后,可能不会使用压缩器对象。

13 _bz2.BZ2Decompressor

BZ2Decompressor, _bz2.BZ2Decompressor, module=_bz2, line:0 at

创建一个解压缩对象,用于增量地解压缩数据。对于一次性解压,请使用decompress()函数。

data

1 eof=<member ‘eof’ of ‘_bz2.BZ2Decompressor’ objects> kind:data type:member_descriptor class:<class ‘_bz2.BZ2Decompressor’>
2 needs_input=<member ‘needs_input’ of ‘_bz2.BZ2Decompressor’ objects> kind:data type:member_descriptor class:<class ‘_bz2.BZ2Decompressor’>
3 unused_data=<member ‘unused_data’ of ‘_bz2.BZ2Decompressor’ objects> kind:data type:member_descriptor class:<class ‘_bz2.BZ2Decompressor’>

method

4 decompress(self)

kind=method class=BZ2Decompressor objtype=method_descriptor line:59 at …-1026899380_bz2.py

解压*data*,返回未压缩的字节数据。
如果*max_length*是非负的,则返回最多*max_length*字节的解压缩数据。
如果达到这个限制,可以产生进一步的输出,*self。需要输入*将被设置为``False``。
在这种情况下,下一次调用*decompress()*可能会提供*data*作为b以获得更多的输出。
如果所有输入数据都被解压缩并返回(要么因为它小于*max_length*字节,要么因为*max_length*为负),则*self。
需要输入*将被设置为True。在流结束后尝试解压缩数据会引发EOFError。
流结束后发现的任何数据都将被忽略,并保存在未使用的数据属性中。

14 bz2.BZ2File

BZ2File, bz2.BZ2File, module=bz2, line:0 at

提供透明bzip2 (de)压缩的文件对象。
BZ2File可以作为现有文件对象的包装器,或者直接引用磁盘上的已命名文件。
注意,BZ2File提供了一个二进制文件接口——读取的数据以字节的形式返回,而要写入的数据应该以字节的形式给出。

property

1 closed=<property object at 0x00000000032679F8> kind:property type:property class:<class ‘bz2.BZ2File’>

method

2 close(self)

kind=method class=BZ2File objtype=function line:108 at …\\bz2.py

刷新并关闭文件。
可以多次调用而没有错误。
一旦文件被关闭,对它的任何其他操作都会引发ValueError。

3 fileno(self)

kind=method class=BZ2File objtype=function line:138 at …\\bz2.py

返回基础文件的文件描述符。```
> #### 4	peek(self, n=0)
> kind=method	class=BZ2File	objtype=function	line:157 at ...\\bz2.py

返回缓冲数据,但不提升文件位置。
总是返回至少一个字节的数据,除非在EOF。返回的确切字节数未指定。

> #### 5	read(self, size=-1)
> kind=method	class=BZ2File	objtype=function	line:170 at ...\\bz2.py

从文件中读取未压缩字节的大小。
如果size为负数或省略,则读取直到达到EOF。
如果文件已经在EOF,则返回b’'。

> #### 6	read1(self, size=-1)
> kind=method	class=BZ2File	objtype=function	line:180 at ...\\bz2.py

读取未压缩字节的大小,同时尽量避免从底层流进行多次读取。
如果size为负,则读取缓冲区的数据值。
如果文件在EOF,则返回b’'。

> #### 7	readable(self)
> kind=method	class=BZ2File	objtype=function	line:147 at ...\\bz2.py

返回文件是否被打开以供读取。```

8 readinto(self, b)

kind=method class=BZ2File objtype=function line:193 at …\\bz2.py

将字节读入b.返回读取的字节数(EOF为0)。

9 readline(self, size=-1)

kind=method class=BZ2File objtype=function line:202 at …\\bz2.py

从文件中读取一行未压缩的字节。
终止换行符(如果存在)被保留。
如果size非负,将读取不超过size字节(在这种情况下,行可能是不完整的)。
如果已经在EOF,则返回b''。

10 readlines(self, size=-1)

kind=method class=BZ2File objtype=function line:217 at …\\bz2.py

从文件中读取未压缩字节的行列表。
Size可以指定来控制读取的行数:一旦到目前为止读取的行总大小等于或超过Size,就不会再读取任何行。

11 seek(self, offset, whence=io.SEEK_SET)

kind=method class=BZ2File objtype=function line:257 at …\\bz2.py

更改文件位置。新位置由偏移量指定,相对于由何处指示的位置。
where的值为:
    0:流的开始(默认值);偏移量不能为负
    1:当前流位置
    2:流的结束;偏移量不能为负
返回新的文件位置。
注意,搜索是模拟的,因此根据参数的不同,这个操作可能非常慢。

12 seekable(self)

kind=method class=BZ2File objtype=function line:143 at …\\bz2.py

返回文件是否支持查找。

13 tell(self)

kind=method class=BZ2File objtype=function line:276 at …\\bz2.py

返回当前文件位置。

14 writable(self)

kind=method class=BZ2File objtype=function line:152 at …\\bz2.py

返回文件是否被打开进行写入。

15 write(self, data)

kind=method class=BZ2File objtype=function line:232 at …\\bz2.py

写入一个字节字符串到文件。
返回写入的未压缩字节数,通常为len(data)。
注意,由于缓冲,在调用close()之前,磁盘上的文件可能不会反映写入的数据。

16 writelines(self, seq)

kind=method class=BZ2File objtype=function line:246 at …\\bz2.py

将字节字符串序列写入文件。
返回写入的未压缩字节数。
Seq可以是任何可迭代的字节字符串。
在写入的字节字符串之间不添加行分隔符。

内嵌函数或方法

15 _builtin_open

私有或局部

16 _builtin_open
17 _compression <module ‘_compression’ from ‘…\\lib\\_compression.py’>
18 _MODE_CLOSED 0
19 _MODE_READ 1
20 _MODE_WRITE 3

【io】

io, fullname=io, file=io.py

【os】

os, fullname=os, file=os.py

【warnings】

warnings, fullname=warnings, file=warnings.py

【_compression】

_compression, fullname=_compression, file=_compression.py

gzip, lzma和bz2模块使用的内部类

统计

序号类别数量
1int1
4str5
8dict1
9module1
10class2
13residual2
14system8
16all12

常量

int

1 BUFFER_SIZE 8192

模块

2 io

io, fullname=io, file=io.py

3 _compression.BaseStream

BaseStream, _compression.BaseStream, module=_compression, line:0 at

模式检查助手函数。

4 _compression.DecompressReader

DecompressReader, _compression.DecompressReader, module=_compression, line:0 at

将解压器API适配为RawIOBase读取器API

method

1 close(self)

kind=method class=DecompressReader objtype=function line:59 at …_compression.py

2 read(self, size=-1)

kind=method class=DecompressReader objtype=function line:72 at …_compression.py

3 readable(self)

kind=method class=DecompressReader objtype=function line:36 at …_compression.py

4 readinto(self, b)

kind=method class=DecompressReader objtype=function line:66 at …_compression.py

5 seek(self, offset, whence=io.SEEK_SET)

kind=method class=DecompressReader objtype=function line:120 at …_compression.py

6 seekable(self)

kind=method class=DecompressReader objtype=function line:63 at …_compression.py

7 tell(self)

kind=method class=DecompressReader objtype=function line:150 at …_compression.py

返回当前文件位置。

python bz2模块

bz2模块提供了使用bzip2算法压缩和解压缩数据一套完整的接口。

bz2模块包括:

 用于读写压缩文件的open()函数BZ2File

 用于一次性压缩和解压缩的compress() 和 decompress() 函数

 用于增量压缩和解压的 BZ2Compressor 和 BZ2Decompressor 

文件压缩和解压

bz2.open(filename, mode=\'r\', compresslevel=9, encoding=None, errors=None, newline=None)

以二进制或文本模式打开 bzip2 压缩文件,返回一个文件对象。

import bz2

file = bz2.open(\'xy.bz2\', \'r\')
for line in file:
    print(line)

class bz2.BZ2File(filename, mode=\'r\', buffering=None, compresslevel=9)

用二进制模式打开 bzip2 压缩文件

一次性的压缩和解压缩

bz2.compress(data)

压缩文件

bz2.decompress(data)

解压缩文件

import bz2

def main():
    username = bz2.decompress(un)
    username = username.decode()
    print(username)
    username1 = bz2.compress(username.encode())
    print(username1)

if __name__ == \'__main__\':
    un = b\'BZh91AY&SYA\\xaf\\x82\\r\\x00\\x00\\x01\\x01\\x80\\x02\\xc0\\x02\\x00 \\x00!\\x9ah3M\\x07<]\\xc9\\x14\\xe1BA\\x06\\xbe\\x084\'
    main()

得到结果:

增量压缩和解压缩

 class bz2.BZ2Compressor(compresslevel=9)

  compress(data向压缩对象提供数据,提供完压缩数据后,使用fiush()方法以完成压缩方法

  flush() 结束压缩进程,返回内部缓冲中剩余的压缩完成的数据。

 class bz2.BZ2Decompressor

创建一个新的解压缩器对象。该对象可用于递增地解压缩数据。

  decompress(datamax_length=-1)

  解压缩数据,将未压缩的数据作为字节返回

以上是关于一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)的主要内容,如果未能解决你的问题,请参考以下文章

(十三)Centos之压缩和解压缩

Centos之压缩和解压缩命令

linux 学习随笔-压缩和解压缩

一图看懂Python生态圈图像格式转换

linux中文件压缩和解压缩及安装程序包介绍

Linux高级命令05:压缩和解压缩命令