做自由与创造的先行者

数据压缩 | Data Compression gzip

Python开发手册

这个模块提供了一个简单的界面来压缩和解压缩文件,就像GNU程序gzip和gunzip一样。

数据压缩由zlib模块提供。

该gzip模块提供了GzipFile在Python的文件对象之后建模的类。本GzipFile类读取和写入gzip的 -format文件,自动压缩或解压缩数据,使得它看起来像一个普通的文件对象。

请注意,该模块不支持gzip和gunzip程序可以解压缩的其他文件格式,例如压缩和打包产生的文件格式。

该模块定义了以下项目:

class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj[, mtime]]]]])

GzipFile该类的构造函数,它模拟文件对象的大部分方法,但readinto()和truncate()方法除外。至少fileobj和filename中的一个必须被赋予一个不平凡的值。

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

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

该模式参数可以是任意的'r','rb','a','ab','w',或者'wb',根据文件是否被读取或写入。如果可辨别,缺省值是fileobj的模式; 否则,默认是'rb'。如果没有给出,'b'标志将被添加到模式以确保文件以二进制模式打开以实现跨平台可移植性。

所述compresslevel参数是从一个整数0,以9控制压缩的水平; 1是最快的并且产生最小的压缩,并且9是最慢的并且产生最大的压缩。0没有压缩。默认是9。

的修改时间参数是压缩时将被写入到该流一个可选的数字时间戳记。所有gzip压缩流都需要包含一个时间戳。如果省略或None使用当前时间。该模块在解压缩时忽略时间戳; 然而,一些程序,比如gunzip,就是利用它。时间戳的格式与返回的对象time.time()的st_mtime属性的返回值和格式相同os.stat()。

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

GzipFile支持迭代和with声明。

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

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

2.7版本中的新功能:mtime参数。

gzip.open(filename[, mode[, compresslevel]])

这是一个简写GzipFile(filename, mode, compresslevel)。该文件名参数是必需的; 模式默认为'rb'并将默认压缩级别设置为9。

1.使用示例

如何读取压缩文件的示例:

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)

网站建设开发|APP设计开发|小程序建设开发
下一篇:数据压缩 | Data Compression tarfile
上一篇:数据压缩 | Data Compression bz2