Python实现解压缩文件或文件夹的2种内置方法详解

游客520 2025-04-15 11:11:11编程技术
457

前言

在日常开发或数据处理工作中,我们经常需要对文件或文件夹进行压缩和解压缩操作。Python 提供了强大的内置模块,如 zipfile 和 shutil,可以帮助我们高效地完成这些任务。

本文将介绍如何使用 Python 对文件夹或文件进行压缩和解压缩,内容包括两种常见方式:zipfile 和 shutil,并提供完整代码示例。

python

压缩文件或文件夹

1. 使用 zipfile 模块压缩文件夹

zipfile 模块是 Python 标准库的一部分,用于创建和读取 .zip 文件。它支持精细控制文件压缩的内容和路径。

以下是一个将文件夹压缩为 .zip 文件的代码示例:

import os
import zipfile

def compress_folder_to_zip(folder_path, zip_path):
    with zipfile.ZipFile(zip_path, '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 文件时,保留相对路径
                arcname = os.path.relpath(file_path, folder_path)
                zipf.write(file_path, arcname)
    print(f"压缩完成:{zip_path}")

# 示例用法
compress_folder_to_zip('path/to/folder', 'output.zip')

代码说明:

  • os.walk 遍历文件夹及其子文件夹中的所有文件。

  • os.path.relpath 确保压缩后的文件路径相对于原始文件夹路径。

  • zipfile.ZIP_DEFLATED 指定压缩算法。

2. 使用 shutil 模块压缩文件夹

如果你只需要简单快速地将文件夹压缩为 .zip 或 .tar 文件,可以使用 shutil 模块。它支持多种压缩格式,包括 ziptargztar 等。

代码示例如下:

import shutil

def compress_with_shutil(folder_path, output_path, format='zip'):
    # format 支持 "zip", "tar", "gztar", "bztar", "xztar"
    shutil.make_archive(output_path, format, folder_path)
    print(f"压缩完成:{output_path}.{format}")

# 示例用法
compress_with_shutil('path/to/folder', 'output', 'zip')

代码说明:

  • shutil.make_archive 方法自动完成压缩过程,output_path 不需要包含扩展名。

  • format 参数支持多种格式,选择适合的压缩格式即可。

解压缩文件

1. 使用 zipfile 解压 .zip 文件

使用 zipfile 模块,我们可以解压 .zip 文件到指定目录:

import zipfile

def extract_zip(zip_path, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extractall(extract_to)
    print(f"解压完成:{extract_to}")

# 示例用法
extract_zip('output.zip', 'path/to/extract')

代码说明:

  • zipf.extractall() 会解压缩 ZIP 文件中的所有内容到指定路径。

  • 适用于需要自定义解压逻辑的场景。

2. 使用 shutil 解压文件

如果文件是 .zip 格式,并且不需要复杂操作,可以使用 shutil 快速解压:

import shutil

def extract_with_shutil(zip_path, extract_to):
    shutil.unpack_archive(zip_path, extract_to)
    print(f"解压完成:{extract_to}")

# 示例用法
extract_with_shutil('output.zip', 'path/to/extract')

代码说明:

  • shutil.unpack_archive 支持解压多种格式文件,如 .zip 和 .tar

  • 适用于快速解压任务。

完整示例:压缩与解压缩结合

以下是一个包含压缩和解压缩功能的完整 Python 脚本:

import os
import zipfile
import shutil

def compress_folder(folder_path, zip_path):
    with zipfile.ZipFile(zip_path, '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)
                arcname = os.path.relpath(file_path, folder_path)
                zipf.write(file_path, arcname)
    print(f"压缩完成:{zip_path}")

def decompress_folder(zip_path, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        zipf.extractall(extract_to)
    print(f"解压完成:{extract_to}")

# 示例用法
if __name__ == "__main__":
    # 压缩文件夹
    compress_folder('path/to/folder', 'output.zip')
    # 解压 ZIP 文件
    decompress_folder('output.zip', 'path/to/extract')

总结

本文详细介绍了 Python 中实现文件或文件夹压缩与解压缩的两种常见内置方法:zipfile模块和shutil模块。zipfile模块因其对压缩内容和路径的高度可控性,适用于需要自定义逻辑的复杂场景;而shutil模块则以其简洁高效的特点,成为快速完成压缩与解压缩任务的理想选择。通过本文提供的代码示例,读者可以轻松上手并根据实际需求选择合适的方法。无论你是希望对多个文件进行精细管理,还是仅仅需要快速解压一个文件夹,这两种方法都能满足你的需求。

Python 解压缩 文件
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐

Python yield 用法大全:轻松掌握生成器与迭代器设计
在Python中,yield关键字是构建生成器的核心工具,它通过状态保存机制实现了高效的内存管理和惰性计算。与传统的迭代器实现相比,yield能将迭代器设计从复杂的类定义简化为直...
2025-09-15 编程技术
536

基于Python的旅游数据分析可视化系统【2026最新】
本研究成功开发了基于Python+Django+Vue+MySQL的旅游数据分析可视化系统,实现了从数据采集到可视化展示的全流程管理。系统采用前后端分离架构,前端通过Vue框架构建响应式界...
2025-09-13 编程技术
563

手把手教你用Python读取txt文件:从基础到实战的完整教程
Python作为数据处理的利器,文件读写是其基础核心功能。掌握txt文件读取不仅能处理日志、配置文件等常见场景,更是理解Python文件I/O的基石。本文ZHANID工具网将从基础语法到...
2025-09-12 编程技术
538

Python Flask 入门指南:从零开始搭建你的第一个 Web 应用
Flask作为 Python 中最轻量级且灵活的 Web 框架之一,特别适合初学者快速上手 Web 应用开发。本文将带你一步步了解如何在本地环境中安装 Flask、创建一个简单的 Web 应用,并...
2025-09-11 编程技术
527

Python 如何调用 MediaPipe?详细安装与使用指南
MediaPipe 是 Google 开发的跨平台机器学习框架,支持实时处理视觉、音频和文本数据。本文脚本之家将系统讲解 Python 环境下 MediaPipe 的安装、配置及核心功能调用方法,涵盖...
2025-09-10 编程技术
572

基于Python开发一个利率计算器的思路及示例代码
利率计算是金融领域的基础需求,涵盖贷款利息、存款收益、投资回报等场景。传统计算依赖手工公式或Excel表格,存在效率低、易出错等问题。Python凭借其简洁的语法和强大的数学...
2025-09-09 编程技术
510