在Python中读取gzip文件

本教程讨论了压缩文件的重要性,并说明了如何使用Python的gzip 模块对文件进行压缩和解压。

Python 中的gzip 模块

这个模块为压缩和解压文件提供了一个简单明了的接口,就像 GNU 程序员gzipgunzipgzip 模块提供了GzipFile 类以及open(),compress(), 和decompress() 的方便方法。

gzip 模块以gzip 的格式读写文件,对内容进行压缩或解压,使其看起来像传统的文件对象。

gzip “是最广泛使用的文件压缩/解压格式之一。文本文件通过使用gzip 压缩可以大大节省存储空间。在处理大型数据文件时,通常的做法是gzip 或压缩大型文本文件以减少文件大小。

解开一个压缩的gzip 文件,并逐行编辑一个大得多的解压缩文件,是处理压缩文件的基本方法。然而,这不可能是最优秀的选择。

压缩文件的重要性

减少存储硬件、数据传输时间和通信带宽,只是压缩的几个好处。此外,这可能会带来巨大的经济节约。

压缩后的文件比未压缩的文件需要更少的存储空间,这大大降低了存储成本。此外,压缩后的文件传输速度更快,同时利用的网络容量更少。

这可以在提高生产力的同时节省开支。数据压缩的主要缺点是,它使用更多的计算能力来压缩必要的数据。

因此,压缩供应商高度重视将速度和资源效率最大化,以减少密集压缩活动的影响。因此,在生产力提高的同时,成本可以降低。

在Python中用gzip 来压缩一个文件

在下面的例子中,以wb 模式打开一个文本文件,意味着该文件以二进制模式打开写入。所以在这里,文件test.txt 被改变为test.txt.gz

示例代码:

import gzip
f_in = open('test.txt', 'rb')
f_out = gzip.open('test.txt.gz', 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()
print("The file is compressed.")

输出:

The file is compressed.

使用gzip 模块时的数据添加

在下面的代码中显示,我们可以在现有的文件test.txt.gz 中添加任何我们想添加的数据,但是我们只能在二进制模式下添加数据,所以我们在文本的开头使用了b ,并且显示了一条信息 successfully added

示例代码:

import gzip
data = b'Information included in this file.'
with gzip.open("test.txt.gz", "wb") as f:
    f.write(data)
    print("successfully added")

输出:

successfully added

在Python中从一个gzip 文件中读取

我们可以在下面的代码中读取文件,因为我们已经以二进制格式添加了文本。然后,它在输出中显示该文本,如图所示。二进制文件是在rb 模式下打开阅读的,所以我们使用了rb 来打开文件。

示例代码:

import gzip
with gzip.open('test.txt.gz', 'rb') as f:
     for line in f:
         print(line)

输出:

b'Information included in this file.'

在Python中解压gzip 文件

在下面的例子中,我们先打开解压文件,然后再打开压缩文件,然后用shutil 把解压文件中的对象复制到压缩文件中。

示例代码:

import gzip
import shutil
with gzip.open('test.txt.gz', 'rb') as f_in:
    with open('test.txt', 'wb') as f_out:
        shutil.copyfileobj(f_in, f_out)
print("The file is Decompressed.")

输出:

The file is Decompressed.

这里有几件你必须记住的重要事情。首先,为了创建一个gzip 文件,我们必须把一个文本文件转换成一个gz 文件;基本上,你必须压缩这个文件。

你只能以二进制模式写入文件wb ,以二进制模式读取文件rb ,并解压压缩后的文件。