gzip
gzip — Support for gzip files
源代码:
Lib / gzip.py
这个模块提供了一个简单的界面来压缩和解压缩文件,就像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)