📅  最后修改于: 2023-12-03 15:15:27.687000             🧑  作者: Mango
在处理大量数据和文件的时候,文件压缩是非常必要的。这可以节省磁盘空间、提高传输速度和降低存储成本。gzip 是一种流行的文件压缩格式,常用于网站、文件传输和数据备份。
Python 自带了gzip模块,可以用来压缩和解压gzip文件。本文将介绍如何使用 Python gzip 模块压缩和解压一个文件夹。
在使用gzip模块之前,需要先导入它。
import gzip
要压缩一个文件夹,你需要遍历文件夹内的所有文件,并将它们写入一个压缩文件中。我们可以使用一个递归函数来进行文件夹的遍历。
import os
def compress_folder(folder_path, output_path):
"""
压缩文件夹到 output_path
"""
with gzip.open(output_path, 'wb') as f_out:
for root, dirs, files in os.walk(folder_path):
for filename in files:
file_path = os.path.join(root, filename)
with open(file_path, 'rb') as f_in:
f_out.write(f_in.read())
使用 gzip.open
指定输出路径,并将文件逐个写入输出文件中。
解压一个 gzip 文件较为简单,只需要打开 gzip 文件并将其解压到制定目录。
def decompress_folder(input_path, output_path):
"""
解压 gzip 文件到指定路径
"""
with gzip.open(input_path, 'rb') as f_in:
with open(output_path, 'wb') as f_out:
f_out.write(f_in.read())
使用 gzip.open
打开 gzip 文件,并使用 open
打开输出文件,将数据写入输出文件即可。
这里是一个完整的示例,展示了如何在 Python 中压缩和解压一个文件夹。
import os
import shutil
import gzip
def compress_folder(folder_path, output_path):
"""
压缩文件夹到 output_path
"""
with gzip.open(output_path, 'wb') as f_out:
for root, dirs, files in os.walk(folder_path):
for filename in files:
file_path = os.path.join(root, filename)
with open(file_path, 'rb') as f_in:
f_out.write(f_in.read())
def decompress_folder(input_path, output_path):
"""
解压 gzip 文件到指定路径
"""
with gzip.open(input_path, 'rb') as f_in:
with open(output_path, 'wb') as f_out:
f_out.write(f_in.read())
# 压缩一个文件夹
compress_folder('data', 'data.gz')
# 解压一个文件夹
if os.path.isdir('output'):
shutil.rmtree('output')
os.mkdir('output')
decompress_folder('data.gz', 'output')
这个示例将 data
文件夹压缩成 data.gz
文件,并将其解压到 output
文件夹中。