• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    python解压缩文件或文件夹两种常见方式(附代码)

    发布者: 山止川行 | 发布时间: 2025-6-17 08:05| 查看数: 189| 评论数: 0|帖子模式

    前言

    在日常开发或数据处理工作中,我们经常需要对文件或文件夹进行压缩和解压缩操作。Python 提供了强大的内置模块,如
    1. zipfile
    复制代码
    1. shutil
    复制代码
    ,可以帮助我们高效地完成这些任务。
    本文将介绍如何使用 Python 对文件夹或文件进行压缩和解压缩,内容包括两种常见方式:
    1. zipfile
    复制代码
    1. shutil
    复制代码
    ,并提供完整代码示例。

    压缩文件或文件夹


    1. 使用 zipfile 模块压缩文件夹
    1. zipfile
    复制代码
    模块是 Python 标准库的一部分,用于创建和读取
    1. .zip
    复制代码
    文件。它支持精细控制文件压缩的内容和路径。
    以下是一个将文件夹压缩为
    1. .zip
    复制代码
    文件的代码示例:
    1. import os
    2. import zipfile

    3. def compress_folder_to_zip(folder_path, zip_path):
    4.     with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
    5.         for root, dirs, files in os.walk(folder_path):
    6.             for file in files:
    7.                 file_path = os.path.join(root, file)
    8.                 # 添加到 ZIP 文件时,保留相对路径
    9.                 arcname = os.path.relpath(file_path, folder_path)
    10.                 zipf.write(file_path, arcname)
    11.     print(f"压缩完成:{zip_path}")

    12. # 示例用法
    13. compress_folder_to_zip('path/to/folder', 'output.zip')
    复制代码
    代码说明:

      1. os.walk
      复制代码
      遍历文件夹及其子文件夹中的所有文件。
      1. os.path.relpath
      复制代码
      确保压缩后的文件路径相对于原始文件夹路径。
      1. zipfile.ZIP_DEFLATED
      复制代码
      指定压缩算法。

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

    如果你只需要简单快速地将文件夹压缩为
    1. .zip
    复制代码
    1. .tar
    复制代码
    文件,可以使用
    1. shutil
    复制代码
    模块。它支持多种压缩格式,包括
    1. zip
    复制代码
    1. tar
    复制代码
    1. gztar
    复制代码
    等。
    代码示例如下:
    1. import shutil

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

    6. # 示例用法
    7. compress_with_shutil('path/to/folder', 'output', 'zip')
    复制代码
    代码说明:

      1. shutil.make_archive
      复制代码
      方法自动完成压缩过程,
      1. output_path
      复制代码
      不需要包含扩展名。
      1. format
      复制代码
      参数支持多种格式,选择适合的压缩格式即可。

    解压缩文件


    1. 使用 zipfile 解压 .zip 文件

    使用
    1. zipfile
    复制代码
    模块,我们可以解压
    1. .zip
    复制代码
    文件到指定目录:
    1. import zipfile

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

    6. # 示例用法
    7. extract_zip('output.zip', 'path/to/extract')
    复制代码
    代码说明:

      1. zipf.extractall()
      复制代码
      会解压缩 ZIP 文件中的所有内容到指定路径。
    • 适用于需要自定义解压逻辑的场景。

    2. 使用 shutil 解压文件

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

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

    5. # 示例用法
    6. extract_with_shutil('output.zip', 'path/to/extract')
    复制代码
    代码说明:

      1. shutil.unpack_archive
      复制代码
      支持解压多种格式文件,如
      1. .zip
      复制代码
      1. .tar
      复制代码

    • 适用于快速解压任务。

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

    以下是一个包含压缩和解压缩功能的完整 Python 脚本:
    1. import os
    2. import zipfile
    3. import shutil

    4. def compress_folder(folder_path, zip_path):
    5.     with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
    6.         for root, dirs, files in os.walk(folder_path):
    7.             for file in files:
    8.                 file_path = os.path.join(root, file)
    9.                 arcname = os.path.relpath(file_path, folder_path)
    10.                 zipf.write(file_path, arcname)
    11.     print(f"压缩完成:{zip_path}")

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

    16. # 示例用法
    17. if __name__ == "__main__":
    18.     # 压缩文件夹
    19.     compress_folder('path/to/folder', 'output.zip')
    20.     # 解压 ZIP 文件
    21.     decompress_folder('output.zip', 'path/to/extract')
    复制代码
    总结

    在这篇文章中,我们学习了如何使用 Python 的
    1. zipfile
    复制代码
    1. shutil
    复制代码
    模块进行文件夹和文件的压缩与解压缩操作:

    • zipfile 模块:适合需要精细控制的场景,如自定义压缩路径。
    • shutil 模块:快速完成压缩和解压缩,适合简单任务。
    无论你是需要对多个文件进行压缩管理,还是希望快速解压一个文件夹,这两种方式都能满足你的需求。
    到此这篇关于python解压缩文件或文件夹两种常见方式的文章就介绍到这了,更多相关python解压缩文件或文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/python/339614fjx.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表