一图看懂 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压缩库的接口。
该模块提供了一个文件接口、用于增量压缩(解压缩)的类以及用于一次性压缩(解压缩)的函数。
统计
序号 | 类别 | 数量 |
---|---|---|
1 | int | 3 |
4 | str | 6 |
6 | list | 1 |
8 | dict | 1 |
9 | module | 4 |
10 | class | 3 |
11 | function | 4 |
12 | builtin_function_or_method | 1 |
13 | residual | 2 |
14 | system | 10 |
15 | private | 5 |
16 | all | 25 |
常量
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模块使用的内部类
统计
序号 | 类别 | 数量 |
---|---|---|
1 | int | 1 |
4 | str | 5 |
8 | dict | 1 |
9 | module | 1 |
10 | class | 2 |
13 | residual | 2 |
14 | system | 8 |
16 | all | 12 |
常量
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
(data, max_length=-1)
解压缩数据,将未压缩的数据作为字节返回
以上是关于一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)的主要内容,如果未能解决你的问题,请参考以下文章