欢迎访问宙启技术站
智能推送

使用Python实现src路径下文件的压缩与解压缩

发布时间:2024-01-02 05:41:28

要实现文件的压缩和解压缩,可以使用Python的 zipfile 模块。zipfile 模块提供了一种方便的方式来创建、读取和操作 ZIP 归档文件。下面我将介绍如何使用该模块进行文件的压缩和解压缩,并且给出相关的使用例子。

首先,我们需要导入 zipfile 模块:

import zipfile

接下来,我们可以使用 zipfile.ZipFile 类来创建一个压缩文件。该类提供了一些方法来向压缩文件中添加文件或目录,以及设置压缩级别等。

下面是一个将指定目录下的所有文件压缩为一个 ZIP 文件的例子:

def compress_folder(src_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w') as zipf:
        for root, dirs, files in os.walk(src_path):
            for file in files:
                file_path = os.path.join(root, file)
                zipf.write(file_path, os.path.relpath(file_path, src_path))

在上例中,compress_folder() 函数接收两个参数:src_path 是要压缩的文件夹路径,zip_path 是要生成的 ZIP 文件路径。函数使用 with 语句创建一个 ZipFile 对象,并打开 zip_path 文件以写入。

然后,我们遍历 src_path 目录下的所有文件和子目录,使用 ZipFile.write() 方法将每个文件写入到压缩文件中。在写入文件时,可以使用 os.path.relpath() 函数获取文件相对于 src_path 的相对路径,以保持目录结构。

接下来,让我们看一个解压缩文件的例子。可以使用 ZipFile.extractall() 方法来解压缩 ZIP 文件。

def extract_zip(zip_path, extract_path):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extractall(extract_path)

在上例中,extract_zip() 函数接收两个参数:zip_path 是要解压缩的 ZIP 文件路径,extract_path 是要解压到的目标文件夹路径。

函数使用 with 语句创建一个 ZipFile 对象,并打开 zip_path 文件以读取。然后,使用 ZipFile.extractall() 方法将 ZIP 文件中的所有文件解压到 extract_path 目录中。

现在,我们可以使用上述的 compress_folder() 和 extract_zip() 函数来进行文件的压缩和解压缩。下面是一个完整的使用例子:

import zipfile
import os

def compress_folder(src_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w') as zipf:
        for root, dirs, files in os.walk(src_path):
            for file in files:
                file_path = os.path.join(root, file)
                zipf.write(file_path, os.path.relpath(file_path, src_path))

def extract_zip(zip_path, extract_path):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extractall(extract_path)

if __name__ == '__main__':
    # 压缩文件夹
    src_path = '/path/to/src'  # 要压缩的文件夹路径
    zip_path = '/path/to/zipfile.zip'  # 生成的 ZIP 文件路径
    compress_folder(src_path, zip_path)

    # 解压缩文件
    zip_path = '/path/to/zipfile.zip'  # 要解压缩的 ZIP 文件路径
    extract_path = '/path/to/extract'  # 解压到的目标文件夹路径
    extract_zip(zip_path, extract_path)

在上例中,当脚本直接运行时,在 main 函数中调用 compress_folder() 函数来压缩文件夹,然后调用 extract_zip() 函数来解压缩文件。可以根据实际需求修改 src_path、zip_path 和 extract_path 等参数。

通过使用 zipfile 模块的相关函数,我们可以方便地实现文件的压缩和解压缩。这种方式可以简化文件操作,提高代码的可读性和可维护性。