gzip ---支持 gzip 文件夹¶
源代码: Lib/gzip.py
这个模块提供了一个简单的接口,可以像GNU程序一样压缩和解压缩文件。 gzip 和 gunzip 会。
数据压缩由 zlib 模块。
这个 gzip 模块提供 GzipFile 类,以及 open() , compress() 和 decompress() 方便功能。这个 GzipFile 类读写 gzip -格式化文件,自动压缩或解压缩数据,使其看起来像普通的 file object .
请注意,可以通过 gzip 和 gunzip 程序,例如由 compress 和 pack ,不受此模块支持。
该模块定义了以下各项:
- gzip.open(filename, mode='rb', compresslevel=9, encoding=None, errors=None, newline=None)¶
以二进制或文本模式打开gzip压缩文件,返回 file object .
这个 filename 参数可以是实际文件名(a
str或bytes对象),或要读取或写入的现有文件对象。这个 mode 参数可以是
'r','rb','a','ab','w','wb','x'或'xb'对于二进制模式,或'rt','at','wt'或'xt'用于文本模式。默认值为'rb'.这个 压缩能级 参数是从0到9的整数,至于
GzipFile构造函数。对于二进制模式,此函数等价于
GzipFile构造函数:GzipFile(filename, mode, compresslevel). 在这种情况下, encoding , errors 和 newline 不能提供参数。对于文本模式,A
GzipFile对象被创建并封装在io.TextIOWrapper具有指定编码、错误处理行为和行尾的实例。在 3.3 版更改: 为添加了支持 filename 作为文件对象,支持文本模式,以及 encoding , errors 和 newline 参数。
在 3.4 版更改: 增加了对
'x','xb'和'xt'模式。在 3.6 版更改: 接受一 path-like object .
- exception gzip.BadGzipFile¶
为无效的gzip文件引发异常。它继承了
OSError.EOFError和zlib.error对于无效的gzip文件也可以引发。3.8 新版功能.
- class gzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)¶
的构造函数
GzipFile类,它模拟 file object ,除了truncate()方法。至少其中之一 文件对象 和 filename 必须给出一个非平凡的值。新类实例基于 文件对象 ,可以是常规文件,
io.BytesIO对象,或模拟文件的任何其他对象。它默认为None,在这种情况下 filename 打开以提供文件对象。什么时候? 文件对象 不是
None, the filename 参数仅用于包含在 gzip 文件头,可能包括未压缩文件的原始文件名。默认为文件名 文件对象 ,如果可以识别;否则,它默认为空字符串,在这种情况下,原始文件名不包含在头中。这个 mode 参数可以是
'r','rb','a','ab','w','wb','x'或'xb',取决于文件是读还是写。默认为 文件对象 如果可以识别,则默认为'rb'. 在将来,Python会发布 文件对象 将不使用。最好总是详细说明 mode 写作。请注意,文件始终以二进制模式打开。要以文本模式打开压缩文件,请使用
open()(或封装你的GzipFile用一个io.TextIOWrapper)这个 压缩能级 参数是来自的整数
0到9控制压缩水平;1速度最快,产生的压缩最小,并且9最慢,产生的压缩量最大。0没有压缩。默认值为9.这个 mtime 参数是一个可选的数字时间戳,在压缩时写入流中的最后一个修改时间字段。它只能在压缩模式下提供。如果省略或
None,使用当前时间。见mtime属性以获取更多详细信息。调用一个
GzipFile对象的close()方法不关闭 文件对象 ,因为您可能希望在压缩数据之后附加更多的材料。这还允许您通过io.BytesIO对象已打开以写入为 文件对象 ,并使用io.BytesIO对象的getvalue()方法。GzipFile支持io.BufferedIOBase接口,包括迭代和with语句。只有truncate()方法未实现。GzipFile还提供以下方法和属性:- peek(n)¶
读 n 未压缩的字节,而不推进文件位置。在压缩流上最多进行一次读取以满足调用。返回的字节数可能大于或小于请求的字节数。
3.2 新版功能.
- mtime¶
在解压缩时,最近读取头中的最后修改时间字段的值可以作为整数从该属性中读取。读取任何头之前的初始值为
None.所有 gzip 压缩流需要包含此时间戳字段。一些程序,例如 gunzip ,使用时间戳。格式与返回值相同
time.time()以及st_mtime返回的对象的属性os.stat().
在 3.2 版更改: 添加了对零填充和不可搜索文件的支持。
在 3.3 版更改: 这个
io.BufferedIOBase.read1()方法现在已实现。在 3.4 版更改: 增加了对
'x'和'xb'模式。在 3.5 版更改: 增加了对任意写入的支持 bytes-like objects . 这个
read()方法现在接受的参数为None.在 3.6 版更改: 接受一 path-like object .
3.9 版后已移除: 打开
GzipFile用于不指定 mode 参数已弃用。
- gzip.compress(data, compresslevel=9, *, mtime=None)¶
压缩 data 返回一个
bytes包含压缩数据的对象。 压缩能级 和 mtime 与中的含义相同GzipFile上面的构造函数。3.2 新版功能.
在 3.8 版更改: 增加了 mtime 可复制输出的参数。
使用示例¶
如何读取压缩文件的示例:
import gzip
with gzip.open('/home/joe/file.txt.gz', 'rb') as f:
file_content = f.read()
如何创建压缩gzip文件的示例:
import gzip
content = b"Lots of content here"
with gzip.open('/home/joe/file.txt.gz', 'wb') as f:
f.write(content)
gzip压缩现有文件的示例:
import gzip
import shutil
with open('/home/joe/file.txt', 'rb') as f_in:
with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
gzip压缩二进制字符串的示例:
import gzip
s_in = b"Lots of content here"
s_out = gzip.compress(s_in)
参见
- 模块
zlib 基本数据压缩模块需要支持 gzip 文件格式。
命令行界面¶
这个 gzip 模块提供了一个简单的命令行接口来压缩或解压缩文件。
一旦执行 gzip 模块保存输入文件。
在 3.8 版更改: 添加具有用法的新命令行接口。默认情况下,执行CLI时,默认压缩级别为6。
命令行选项¶
- --fast¶
表示最快的压缩方法(较少的压缩)。
- --best¶
指示最慢的压缩方法(最佳压缩)。
- -d, --decompress¶
解压缩给定的文件。
- -h, --help¶
显示帮助消息。