12.2. gzip-支持 gzip 文件

源代码: Lib/gzip.py


该模块提供了一个简单的界面来压缩和解 zipfile,就像 GNU 程序 gzipgunzip 一样。

数据压缩由zlib模块提供。

gzip模块提供了GzipFile类,该类以 Python 的文件对象为模型。 GzipFile类读取和写入 gzip 格式的文件,自动压缩或解压缩数据,使其看起来像普通的文件对象。

请注意,此模块不支持可以由 gzipgunzip 程序解压缩的其他文件格式,例如 compresspack 生成的文件格式。

该模块定义以下各项:

新的类实例基于* fileobj ,该文件可以是常规文件,StringIO对象,也可以是模拟文件的任何其他对象。默认为None,在这种情况下,将打开 filename *以提供文件对象。

如果* fileobj 不是None,则 filename 参数仅用于包含在 gzip 文件头中,该文件头可能包含未 zipfile 的原始文件名。如果可以识别,则默认为 fileobj *的文件名;否则,它默认为空字符串,在这种情况下,原始文件名不包含在标题中。

调用GzipFile对象的close()方法不会关闭* fileobj ,因为您可能希望在压缩数据之后附加更多材料。这还允许您传递为写入而打开的StringIO对象为 fileobj *,并使用StringIO对象的getvalue()方法检索所得的内存缓冲区。

GzipFile支持迭代和with语句。

在 2.7 版中进行了更改:添加了对with语句的支持。

在 2.7 版中进行了更改:添加了对零填充文件的支持。

2.7 版的新Function:* mtime *参数。

12.2.1. 使用范例

如何读取 zipfile 的示例:

import gzip
with gzip.open('file.txt.gz', 'rb') as f:
    file_content = f.read()

如何创建压缩的 GZIP 文件的示例:

import gzip
content = "Lots of content here"
with gzip.open('file.txt.gz', 'wb') as f:
    f.write(content)

如何 GZIP 压缩现有文件的示例:

import gzip
import shutil
with open('file.txt', 'rb') as f_in, gzip.open('file.txt.gz', 'wb') as f_out:
    shutil.copyfileobj(f_in, f_out)

See also

  • Module zlib

  • 支持 gzip 文件格式所需的基本数据压缩模块。

首页