gzip – gzip 压缩与解压缩

This module implements a subset of the corresponding CPython module, as described below. For more information, refer to the original CPython documentation: gzip

此模块允许使用 gzip 文件格式采用的 DEFLATE算法 对二进制数据进行压缩和解压缩。

备注

优先使用 deflate.DeflateIO,而不是本模块中的函数,因为它提供了对压缩和解压缩的流接口,当处理读取或写入压缩数据到文件、套接字或流时更方便且更节省内存。

可用性:

  • 此模块 默认不包含 在官方 MicroPython 固件发布中,因为它复制了 deflate 模块中可用的功能。

  • 此模块的副本可以从 micropython-libsource )安装(或冻结)。有关更多信息,请参阅 包管理。本文档描述了该模块。

  • 只有在内置的 deflate 模块中启用了压缩支持时,才能使用压缩支持。

函数

gzip.open(filename, mode, /)

对内置 open() 函数的封装,返回一个 GzipFile 实例。

gzip.decompress(data, /)

data 解压缩为一个字节对象。

gzip.compress(data, /)

data 压缩为一个字节对象。

class gzip.GzipFile(*, fileobj, mode)

此类可用于包装一个 fileobj ,它是任何 stream-like 对象,例如文件、套接字或流(包括 io.BytesIO)。它本身就是一个流,并实现了标准的 read/readinto/write/close 方法。

mode 参数为 "rb" 时,从 GzipFile 实例读取将会解压缩底层流中的数据并返回解压缩后的数据。

如果启用了压缩支持,则 mode 参数可以设置为 "wb",并且对 GzipFile 实例的写入将被压缩并写入底层流。

默认情况下,GzipFile 类将使用 gzip 文件格式读取和写入数据,包括带有校验和的页眉和页脚以及 512 字节的窗口大小。

filecompresslevelmtime 参数不受支持。必须始终指定 fileobjmode 作为关键字参数。

示例

gzip.GzipFile 的典型用例是从存储中读取或写入一个压缩文件:

import gzip

# Reading:
with open("data.gz", "rb") as f:
    with gzip.GzipFile(fileobj=f, mode="rb") as g:
        # Use g.read(), g.readinto(), etc.

 # Same, but using gzip.open:
with gzip.open("data.gz", "rb") as f:
     # Use f.read(), f.readinto(), etc.

# Writing:
with open("data.gz", "wb") as f:
    with gzip.GzipFile(fileobj=f, mode="wb") as g:
        # Use g.write(...) etc

# Same, but using gzip.open:
with gzip.open("data.gz", "wb") as f:
    # Use f.write(...) etc

# Write a dictionary as JSON in gzip format, with a
# small (64 byte) window size.
config = { ... }
with gzip.open("config.gz", "wb") as f:
    json.dump(config, f)

有关使用 gzip 源和选择窗口大小的指导,请参阅 deflate 文档末尾的注意事项