Python对gzip文件的支持(gzip)
GZip应用程序用于文件的压缩和解压缩。它是GNU项目的一部分。Python的gzip模块是GZip应用程序的接口。gzip数据压缩算法本身基于zlib模块。
gzip模块包含GzipFile类的定义及其方法。它还包含便利函数open(),compress()和decompress()。
实现压缩和解压缩的最简单方法是使用上述功能。
打开()
此函数以二进制或文本模式打开gzip压缩文件,并返回类似object的文件,该文件可以是物理文件,字符串或字节对象。默认情况下,文件以“ rb”模式打开,即读取二进制数据,但是,此功能的mode参数可以采用以下列出的其他模式。
binary mode: 'r', 'rb', 'a', 'ab', 'w', 'wb', 'x', 'xb'text mode : 'rt', 'at', 'wt', or 'xt'
此函数还定义了压缩级别,其可接受值在0到9之间。在文本模式下打开文件时,GzipFile对象包装在TextIOWrapper对象中。
压缩()
此函数对作为参数的数据进行压缩,并返回压缩的字节对象。默认情况下,压缩级别为9。
解压缩()
此函数解压缩字节对象并返回未压缩的数据。
以下示例通过在其中写入压缩数据来创建gzip文件。
>>> import gzip>>> data = b'Python - Batteries included'
>>> with gzip.open("test.txt.gz", "wb") as f:
f.write(data)
这将在当前目录中创建“ test.txt.gz”文件。此gzip存档包含“ test.txt”,您可以使用任何解压缩实用工具进行验证。
以编程方式读取此压缩文件
>>> with gzip.open("test.txt.gz", "rb") as f:data = f.read()
>>> data
b'Python - Batteries included'
要将现有文件压缩到gzip存档中,请读取其中的文本并将其转换为字节数组。然后将此字节数组对象写入gzip文件。在下面的示例中,假定“ zen.txt”文件存在于当前目录中。
fp = open("zen.txt","rb")>>> data = fp.read()
>>> bindata = bytearray(data)
>>> with gzip.open("zen.txt.gz", "wb") as f:
f.write(bindata)
从gzip存档中检索未压缩的文件
>>> fp = open("zen1.txt", "wb")>>> with gzip.open("zen.txt.gz", "rb") as f:
bindata = f.read()
>>> fp.write(bindata)
>>> fp.close()
上面的代码将在当前目录中创建“ zen1.txt”,其中包含与“ zen.txt”中相同的数据
除了这些便利功能之外,gzip模块还具有GzipFile类,该类定义了compress()和decompress()方法。此类的构造函数采用与上述含义完全相同的文件,模式和压缩级别参数。
当mode参数指定为'w'或'wb'或'wt'时,GipFile对象将提供write()方法来压缩给定的数据并写入gzip文件。
>>> f = gzip.GzipFile("testnew.txt.gz","wb")>>> data = b'Python - Batteries included'
>>> f.write(data)
>>> f.close()
这将创建一个testnew.txt.gz文件。您可以使用任何实用程序将其解压缩,以查看其中包含带有“ Python –包括电池”文本的testnew.txt。
要使用GzipFile对象解压缩gzip文件,请使用'rb'值将其创建为mode参数,并通过read()方法读取未压缩的数据
>>> f = gzip.GzipFile("testnew.txt.gz","rb")>>> data = f.read()
>>> data
b'Python - Batteries included'
在本文中,我们了解了Python的gzip模块如何实现gzip库。
以上是 Python对gzip文件的支持(gzip) 的全部内容, 来源链接: utcz.com/z/350366.html