gzip包 中文文档

参考:
https://docs.python.org/3/library/gzip.html
我是从参考链接中将原文档翻译过来了。

gzip模块提供了一个压缩和解压缩文件的接口,如同GNU项目中的gzip和gunzip的功能。gzip模块提供了GzipFile类以及open()、compress()和decompress()函数。GzipFile类读取和写入gzip格式的文件,自动压缩或解压数据,使其看起来像一个普通的文件对象。注意,这个模块不支持可以由gzip和gunzip程序解压的其他文件格式,比如那些由压缩和包生成的文件格式。

1 gzip.open(filename, mode=‘rb’, compresslevel=9, encoding=None, errors=None, newline=None)
以二进制或文本模式打开zip压缩文件,返回file对象。
文件名参数可以是实际的文件名(str或bytes对象),也可以是要读取或写入的现有文件对象。
模式参数可以是二进制模式中的任何r, rb, a, ab, w, wb, x或xb,或者文本模式中的任何rt, at, wt或xt。默认值是’rb’。
与GzipFile构造函数一样,compresslevel参数是一个从0到9的整数。

对于二进制模式,这个函数相当于GzipFile构造函数:GzipFile(filename, mode, compresslevel)。在这种情况下,不能提供编码、错误和换行参数。
对于文本模式,将创建一个GzipFile对象,并包装在一个io中。TextIOWrapper实例,具有指定的编码、错误处理行为和行结束。
3.3版本的改变:增加了文件名作为文件对象的支持,支持文本模式,以及编码、错误和换行参数。
3.4版本中的更改:增加了对“x”、“xb”和“xt”模式的支持。
在版本3.6中改变:接受一个类路径的对象。

exception gzip.BadGzipFile
无效gzip文件引发异常。它继承了OSError。EOFError zlib。无效的gzip文件也会引发错误。

3.8版本新增:

2 class gzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)
GzipFile类的构造函数,它模拟file对象的大多数方法,但truncate()方法除外。fileobj和filename中至少有一个必须给定一个值。
新的类实例基于fileobj,它可以是一个常规文件,一个io。BytesIO对象,或任何其他模拟文件的对象。它默认为None,在这种情况下打开filename以提供file对象。
当fileobj不是None时,filename参数只用于包含在gzip文件头中,其中可能包括未压缩文件的原始文件名。它默认为fileobj的文件名(如果可识别的话);否则,它默认为空字符串,在这种情况下,头文件中不包含原始文件名。
mode参数可以是’r’、‘rb’、‘a’、‘ab’、‘w’、‘wb’、‘x’或’xb’中的任何一个,这取决于是读取还是写入文件。默认是fileobj模式(如果可识别的话);否则,默认为’rb’。
注意,该文件始终以二进制模式打开。要以文本模式打开压缩文件,请使用open()(或使用io.TextIOWrapper包装GzipFile)。
compresslevel参数是一个从0到9的整数,控制压缩级别;1是最快的,产生的压缩最少,9是最慢的,产生的压缩最多。0表示没有压缩。默认值是9。
mtime参数是一个可选的数字时间戳,在压缩时写入流中的最后一个修改时间字段。它应该只在压缩模式下提供。如果省略或无,则使用当前时间。更多详细信息,请参见时时属性。

3 调用GzipFile对象的close()方法不会关闭fileobj,因为您可能希望在压缩的数据之后添加更多的材料。这也允许您传递一个io。BytesIO对象打开并以fileobj的形式写入,并使用io检索产生的内存缓冲区。BytesIO对象的getvalue()方法。
GzipFile支持io。BufferedIOBase接口,包括迭代和with语句。只有truncate()方法没有实现。

GzipFile还提供了以下方法和属性:
peek (n)
读取n个未压缩字节,而不推进文件位置。在压缩流上最多执行一次读取以满足调用。返回的字节数可能大于或小于请求的字节数。注意,虽然调用peek()不会改变GzipFile的文件位置,但它可能会改变底层文件对象的位置(例如,如果GzipFile是用fileobj参数构造的)。
新版本3.2:
mtime
在解压时,可以从该属性读取最近读取头中的最后一个修改时间字段的值,该值为整数。读取任何标头之前的初始值为None。
所有gzip压缩流都需要包含这个时间戳字段。一些程序,如gunzip,使用了时间戳。格式与time.time()的返回值和os.stat()返回的对象的st_mtime属性相同。
版本3.1中的更改:添加了对with语句的支持,以及时光刻时构造函数参数和时光刻时属性。
版本3.2中的更改:增加了对零填充和不可查找的文件的支持。
版本3.3中的更改:现在实现了io.BufferedIOBase.read1()方法。
3.4版本中的更改:增加了对’x’和’xb’模式的支持。
版本3.5中的更改:增加了对编写任意字节类对象的支持。read()方法现在接受一个None参数。
在版本3.6中改变:接受一个类路径的对象。

4 gzip.compress(data, compresslevel=9, *, mtime=None)
压缩数据,返回包含压缩数据的bytes对象。compresslevel和mtime的含义与上面GzipFile构造函数中的含义相同。

5 gzip.decompress(data)
解压缩数据,返回包含未压缩数据的bytes对象。

6
如何读取压缩文件的例子:

import gzip
with gzip.open(’/home/joe/file.txt.gz’, ‘rb’) as f:
file_content = f.read()
Example of how to create a compressed GZIP file:

import gzip
content = b"Lots of content here"
with gzip.open(’/home/joe/file.txt.gz’, ‘wb’) as f:
f.write(content)
Example of how to GZIP compress an existing file:

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)
Example of how to GZIP compress a binary string:

import gzip
s_in = b"Lots of content here"
s_out = gzip.compress(s_in)

另请参阅
模块zlib
支持gzip文件格式所需的基本数据压缩模块。
命令行接口
gzip模块提供了一个简单的命令行接口来压缩或解压文件。
一旦执行,gzip模块将保存输入文件。
版本3.8中的更改:添加了一个新的命令行接口。默认情况下,当您将执行CLI时,默认的压缩级别是6。
命令行选项
文件
如果未指定文件,则从sys.stdin中读取。
——快
表示最快的压缩方法(压缩较少)。
——最好的
指示最慢的压缩方法(最佳压缩)。

  • d,减压
    解压缩给定的文件。
  • h,帮助
    显示帮助信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值