首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

gzip

源代码: Lib / gzip.py

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

数据压缩由zlib模块提供。

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

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

该模块定义了以下项目:

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

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

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

fileobj不是时Nonefilename参数仅用于包含在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.使用示例

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

代码语言:javascript
复制
import gzip
with gzip.open('file.txt.gz', 'rb') as f:
    file_content = f.read()

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

代码语言:javascript
复制
import gzip
content = "Lots of content here"
with gzip.open('file.txt.gz', 'wb') as f:
    f.write(content)

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

代码语言:javascript
复制
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)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com