插件窝 干货文章 Python 实现文件压缩和解压缩工具的实用方法

Python 实现文件压缩和解压缩工具的实用方法

压缩 文件 zipfile ZIP 752    来源:    2025-03-14

在Python中,可以使用zipfile模块来实现文件的压缩和解压缩。zipfile模块提供了创建、读取、写入和追加ZIP文件的功能。下面是一个简单的示例,展示如何使用Python实现文件压缩和解压缩工具。

1. 文件压缩

以下代码展示了如何将指定目录下的文件压缩到一个ZIP文件中:

import os
import zipfile

def compress_folder(folder_path, output_zip):
    # 创建一个ZIP文件
    with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
        # 遍历文件夹中的所有文件和子文件夹
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                # 获取文件的完整路径
                file_path = os.path.join(root, file)
                # 将文件添加到ZIP文件中
                zipf.write(file_path, os.path.relpath(file_path, folder_path))

# 示例:压缩当前目录下的所有文件到 'archive.zip'
compress_folder('.', 'archive.zip')

2. 文件解压缩

以下代码展示了如何从ZIP文件中解压缩文件到指定目录:

import zipfile

def extract_zip(zip_path, extract_to):
    # 打开ZIP文件
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        # 解压缩所有文件到指定目录
        zipf.extractall(extract_to)

# 示例:解压缩 'archive.zip' 到 'extracted_files' 目录
extract_zip('archive.zip', 'extracted_files')

3. 压缩和解压缩单个文件

如果你只需要压缩或解压缩单个文件,可以使用以下代码:

压缩单个文件

import zipfile

def compress_file(file_path, output_zip):
    with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipf.write(file_path, os.path.basename(file_path))

# 示例:压缩 'example.txt' 到 'example.zip'
compress_file('example.txt', 'example.zip')

解压缩单个文件

import zipfile

def extract_file(zip_path, file_name, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extract(file_name, extract_to)

# 示例:从 'example.zip' 中解压缩 'example.txt' 到当前目录
extract_file('example.zip', 'example.txt', '.')

4. 注意事项

  • 压缩算法zipfile.ZIP_DEFLATED 使用DEFLATE压缩算法,这是ZIP文件的默认压缩算法。你也可以使用 zipfile.ZIP_STORED 来存储文件而不进行压缩。
  • 路径处理:在压缩和解压缩时,注意文件路径的处理,确保路径正确以避免文件丢失或覆盖。
  • 异常处理:在实际应用中,建议添加异常处理机制,以处理可能出现的文件不存在、权限不足等问题。

5. 扩展功能

你可以根据需要扩展这个工具,例如:

  • 支持多种压缩格式:除了ZIP格式,你还可以使用tarfile模块来处理TAR文件,或者使用第三方库如py7zr来处理7z格式。
  • 加密压缩:使用zipfile模块的setpassword方法可以为ZIP文件设置密码。
  • 进度显示:可以在压缩和解压缩过程中显示进度条,提升用户体验。

通过这些方法,你可以轻松地在Python中实现文件的压缩和解压缩功能。