使用Pythongzip库进行大文件压缩与解压缩的技巧与技巧
发布时间:2023-12-17 01:33:20
gzip是一种用于压缩文件的标准。Python的gzip模块允许我们使用gzip压缩和解压缩文件。
1. 压缩文件:
使用Python的gzip模块可以轻松地压缩文件。下面是一个使用gzip进行文件压缩的例子:
import gzip
import shutil
def compress_file(input_file, output_file):
with open(input_file, 'rb') as f_in:
with gzip.open(output_file, 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
compress_file('input.txt', 'compressed.gz')
在上面的例子中,我们使用gzip.open()函数打开一个输出文件流,并将输入文件流(f_in)中的内容复制到输出文件流(f_out)中。压缩后的文件将以gzip格式保存,并且扩展名为.gz。
2. 解压缩文件:
使用Python的gzip模块还可以轻松地解压缩文件。下面是一个使用gzip进行文件解压缩的例子:
import gzip
import shutil
def decompress_file(input_file, output_file):
with gzip.open(input_file, 'rb') as f_in:
with open(output_file, 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
decompress_file('compressed.gz', 'decompressed.txt')
在上面的例子中,我们使用gzip.open()函数打开一个输入文件流,并将输入文件流(f_in)中的内容复制到一个普通的输出文件流(f_out)中。解压缩后的文件将不再是gzip格式的文件,而是原始的文本文件。
3. 压缩文件夹:
gzip模块还可以用于压缩一个文件夹。下面是一个使用gzip进行文件夹压缩的例子:
import os
import gzip
import shutil
def compress_folder(folder_path, output_file):
with gzip.open(output_file, 'wb') as f_out:
for folder_name, subfolders, filenames in os.walk(folder_path):
for filename in filenames:
file_path = os.path.join(folder_name, filename)
with open(file_path, 'rb') as f_in:
shutil.copyfileobj(f_in, f_out)
compress_folder('folder', 'compressed.gz')
在上面的例子中,我们使用os.walk()函数遍历文件夹下的所有文件,并将每个文件使用gzip进行压缩,最终将所有压缩后的内容保存到一个gzip文件中。
4. 解压缩文件夹:
gzip模块也可以用于解压缩一个文件夹。下面是一个使用gzip进行文件夹解压缩的例子:
import os
import gzip
import shutil
def decompress_folder(input_file, output_folder):
with gzip.open(input_file, 'rb') as f_in:
for index, member in enumerate(f_in):
filename = os.path.join(output_folder, f'file{index + 1}.txt')
with open(filename, 'wb') as f_out:
f_out.write(member)
decompress_folder('compressed.gz', 'folder')
在上面的例子中,我们使用gzip.open()函数打开一个输入文件流,然后将其中的每个成员逐个解压缩到指定的文件夹中。
以上是使用Python的gzip库进行大文件压缩与解压缩的技巧和示例。我们可以通过gzip模块实现文件和文件夹的压缩和解压缩,方便地进行文件的存储和传输。
