📜  gzip 文件夹 python (1)

📅  最后修改于: 2023-12-03 15:15:27.687000             🧑  作者: Mango

Gzip 文件夹 Python

在处理大量数据和文件的时候,文件压缩是非常必要的。这可以节省磁盘空间、提高传输速度和降低存储成本。gzip 是一种流行的文件压缩格式,常用于网站、文件传输和数据备份。

Python 自带了gzip模块,可以用来压缩和解压gzip文件。本文将介绍如何使用 Python gzip 模块压缩和解压一个文件夹。

导入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 文件夹中。