在Python中读取gzip文件
本教程讨论了压缩文件的重要性,并说明了如何使用Python的gzip
模块对文件进行压缩和解压。
Python 中的gzip
模块
这个模块为压缩和解压文件提供了一个简单明了的接口,就像 GNU 程序员gzip
和gunzip
。gzip
模块提供了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
,并解压压缩后的文件。