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

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

Alt

摘要

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

模块图

gzip-module

gzip
	◆struct
	◆sys
	◆time
	◆os
	◆io
	◆builtins
	zlib
	_compression

类关系图

gzip-class

◆object
	◆BaseException
		◆Exception
			◆struct.error
			◆zlib.error
	◆Struct
	◆_io._IOBase
		◆_io._BufferedIOBase
			◆_io.BufferedRWPair
			◆_io.BufferedRandom
			◆_io.BufferedReader
			◆_io.BufferedWriter
			◆_io.BytesIO
			◆io.BufferedIOBase
				_compression.BaseStream
					gzip.GzipFile
		◆_io._RawIOBase
			◆_io.FileIO
			◆_io._WindowsConsoleIO
			◆io.RawIOBase
				_compression.DecompressReader
					gzip._GzipReader
	gzip._PaddedFile
	◆zip
- 备注:采用省略描述。	

模块全展开

【gzip】

gzip, fullname=gzip, file=gzip.py

读取和写入gzip文件的函数。
文件的用户不必担心压缩,但不允许随机访问。

统计

序号 类别 数量
1 int 10
4 str 5
6 list 1
8 dict 1
9 module 8
10 class 3
11 function 5
13 residual 2
14 system 9
15 private 7
16 all 35

常量

int

1 FTEXT 1
2 FHCRC 2
3 FEXTRA 4
4 FNAME 8
5 FCOMMENT 16
6 READ 1
7 WRITE 2
8 _COMPRESS_LEVEL_FAST 1
9 _COMPRESS_LEVEL_TRADEOFF 6
10 _COMPRESS_LEVEL_BEST 9

模块

11 struct

struct, fullname=struct, file=struct.py

12 sys

sys, fullname=sys, file=

13 time

time, fullname=time, file=

14 os

os, fullname=os, file=os.py

15 zlib

zlib, fullname=zlib, file=

此模块中的函数允许使用基于GNU zip的zlib库进行压缩和解压缩。
    adler32(string[, start])    -- 计算Adler-32校验和。
    compress(data[, level])     -- 压缩数据,压缩级别为0-9或-1。
    compressobj([level[, ...]])     -- 返回压缩对象。
    crc32(string[, start])  -- 计算CRC-32校验和。
    decompress(string,[wbits],[bufsize])    -- 解压缩字符串。
    decompressobj([wbits[, zdict]]])    -- 返回一个解压器对象。
'wbits' 是窗口缓冲区大小和容器格式。
压缩器对象支持compress()和flush()方法;
解压器对象支持decompress()和flush()。

16 builtins

builtins, fullname=builtins, file=

17 io

io, fullname=io, file=io.py

18 _compression

_compression, fullname=_compression, file=_compression.py

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

函数

19 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=gzip, line:25 at gzip.py

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

20 write32u(output, value)

write32u(output, value), module=gzip, line:69 at gzip.py

21 compress(data, compresslevel=9)

compress(data, compresslevel=9), module=gzip, line:529 at gzip.py

一次性压缩数据并返回压缩后的字符串。
可选参数是压缩级别,范围为0-9。

22 decompress(data)

decompress(data), module=gzip, line:538 at gzip.py

一次性解压缩gzip压缩字符串。
返回解压后的字符串。

23 _test()

_test(), module=gzip, line:546 at gzip.py

24 gzip._PaddedFile

_PaddedFile, gzip._PaddedFile, module=gzip, line:0 at

最小的只读文件对象,在实际文件的内容前加上字符串。
不应该在gzip.py之外使用,因为它缺乏基本功能。

method

1 prepend(self, prepend=b’')

kind=method class=_PaddedFile objtype=function line:98 at …\gzip.py

2 read(self, size)

kind=method class=_PaddedFile objtype=function line:85 at …\gzip.py

3 seek(self, off)

kind=method class=_PaddedFile objtype=function line:107 at …\gzip.py

4 seekable(self)

kind=method class=_PaddedFile objtype=function line:112 at …\gzip.py

25 gzip.GzipFile

GzipFile, gzip.GzipFile, module=gzip, line:0 at

GzipFile类模拟文件对象的大多数方法,但truncate()方法除外。
该类仅支持以二进制模式打开文件。
如果需要以文本模式打开压缩文件,请使用gzip.open()函数。

data

1 myfileobj=None kind:data type:NoneType class:<class ‘gzip.GzipFile’>

property

2 closed=<property object at 0x00000000039000E8> kind:property type:property class:<class ‘gzip.GzipFile’>
3 filename=<property object at 0x0000000003900048> kind:property type:property class:<class ‘gzip.GzipFile’>
4 mtime=<property object at 0x0000000003900098> kind:property type:property class:<class ‘gzip.GzipFile’>

method

5 close(self)

kind=method class=GzipFile objtype=function line:313 at …\gzip.py

6 fileno(self)

kind=method class=GzipFile objtype=function line:339 at …\gzip.py

调用底层文件对象的fileno()方法。
如果底层文件对象不支持fileno(),这将引发AttributeError。

7 flush(self,zlib_mode=zlib.Z_SYNC_FLUSH)

kind=method class=GzipFile objtype=function line:332 at …\gzip.py

8 peek(self, n)

kind=method class=GzipFile objtype=function line:302 at …\gzip.py

9 read(self, size=-1)

kind=method class=GzipFile objtype=function line:282 at …\gzip.py

10 read1(self, size=-1)

kind=method class=GzipFile objtype=function line:289 at …\gzip.py

实现BufferedIOBase.read1()
当size为负时,读取缓冲区的数据值。

11 readable(self)

kind=method class=GzipFile objtype=function line:354 at …\gzip.py

12 readline(self, size=-1)

kind=method class=GzipFile objtype=function line:383 at …\gzip.py

13 rewind(self)

kind=method class=GzipFile objtype=function line:347 at …\gzip.py

将未压缩的流文件位置指示符返回到文件的开头

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

kind=method class=GzipFile objtype=function line:363 at …\gzip.py

15 seekable(self)

kind=method class=GzipFile objtype=function line:360 at …\gzip.py

16 writable(self)

kind=method class=GzipFile objtype=function line:357 at …\gzip.py

17 write(self,data)

kind=method class=GzipFile objtype=function line:258 at …\gzip.py

26 gzip._GzipReader

_GzipReader, gzip._GzipReader, module=gzip, line:0 at

method

1 read(self, size=-1)

kind=method class=_GzipReader objtype=function line:449 at …\gzip.py

私有或局部

27 _compression <module ‘_compression’ from ‘…\lib\_compression.py’>
28 _COMPRESS_LEVEL_FAST 1
29 _COMPRESS_LEVEL_TRADEOFF 6
30 _COMPRESS_LEVEL_BEST 9
31 _PaddedFile <class ‘gzip._PaddedFile’>
32 _GzipReader <class ‘gzip._GzipReader’>
33 _test <function _test at 0x00000000039010D8>

【struct】

struct, fullname=struct, file=struct.py

【sys】

sys, fullname=sys, file=

【time】

time, fullname=time, file=

【os】

os, fullname=os, file=os.py

【zlib】

zlib, fullname=zlib, file=

此模块中的函数允许使用基于GNU zip的zlib库进行压缩和解压缩。
    adler32(string[, start])    -- 计算Adler-32校验和。
    compress(data[, level])     -- 压缩数据,压缩级别为0-9或-1。
    compressobj([level[, ...]])     -- 返回压缩对象。
    crc32(string[, start])  -- 计算CRC-32校验和。
    decompress(string,[wbits],[bufsize])    -- 解压缩字符串。
    decompressobj([wbits[, zdict]]])    -- 返回一个解压器对象。
'wbits' 是窗口缓冲区大小和容器格式。
压缩器对象支持compress()和flush()方法;
解压器对象支持decompress()和flush()。

统计

序号 类别 数量
1 int 20
4 str 6
10 class 2
12 builtin_function_or_method 6
13 residual 1
14 system 6
16 all 35

常量

int

1 MAX_WBITS 15
2 DEFLATED 8
3 DEF_MEM_LEVEL 8
4 DEF_BUF_SIZE 16384
5 Z_NO_COMPRESSION 0
6 Z_BEST_SPEED 1
7 Z_BEST_COMPRESSION 9
8 Z_DEFAULT_COMPRESSION -1
9 Z_FILTERED 1
10 Z_HUFFMAN_ONLY 2
11 Z_RLE 3
12 Z_FIXED 4
13 Z_DEFAULT_STRATEGY 0
14 Z_NO_FLUSH 0
15 Z_PARTIAL_FLUSH 1
16 Z_SYNC_FLUSH 2
17 Z_FULL_FLUSH 3
18 Z_FINISH 4
19 Z_BLOCK 5
20 Z_TREES 6

str

21 ZLIB_VERSION 1.2.11
22 ZLIB_RUNTIME_VERSION 1.2.11

23 zlib.error

error, zlib.error, module=zlib, line:0 at

内嵌函数或方法

24 adler32
25 compress
26 compressobj
27 crc32
28 decompress
29 decompressobj

【builtins】

builtins, fullname=builtins, file=

【io】

io, fullname=io, file=io.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

返回当前文件位置。

原码演示示例

def _test():
    # 像gzip一样;使用-d,就像gunzip一样。
	# 但是,输入文件不会被删除,也不支持任何其他gzip选项或特性
    args = sys.argv[1:]
    decompress = args and args[0] == "-d"
    if decompress:
        args = args[1:]
    if not args:
        args = ["-"]
    for arg in args:
        if decompress:
            if arg == "-":
                f = GzipFile(filename="", mode="rb", fileobj=sys.stdin.buffer)
                g = sys.stdout.buffer
            else:
                if arg[-3:] != ".gz":
                    print("filename doesn't end in .gz:", repr(arg))
                    continue
                f = open(arg, "rb")
                g = builtins.open(arg[:-3], "wb")
        else:
            if arg == "-":
                f = sys.stdin.buffer
                g = GzipFile(filename="", mode="wb", fileobj=sys.stdout.buffer)
            else:
                f = builtins.open(arg, "rb")
                g = open(arg + ".gz", "wb")
        while True:
            chunk = f.read(1024)
            if not chunk:
                break
            g.write(chunk)
        if g is not sys.stdout.buffer:
            g.close()
        if f is not sys.stdin.buffer:
            f.close()

猜你喜欢

转载自blog.csdn.net/Ahcao2008/article/details/129926839