Python解压ZIP文件的三种实用技巧

 更新时间:2026年01月22日 08:32:10   作者:lxmyzzs  
在日常开发,我们经常需要在 Linux 服务器或 Docker 容器中处理压缩包,本文总结了使用 Python 解压 ZIP 文件的三种常用方法,涵盖了从最简单的命令行操作到处理中文乱码的进阶技巧,大家可以根据需要进行选择

在日常开发,尤其是 AI 模型部署(如 YOLO、LLM 权重部署)中,我们经常需要在 Linux 服务器或 Docker 容器中处理压缩包。有时候容器里甚至没有安装 unzip 命令,这时候 Python 就成了我们的救命稻草。

本文总结了使用 Python 解压 ZIP 文件的三种常用方法,涵盖了从最简单的命令行操作到处理中文乱码的进阶技巧。

方法一:命令行“一行流” (最快、无需写脚本)

这是最简单、最快的方法。Python 标准库自带 zipfile 模块,可以直接在终端调用,无需编写任何 .py 文件。非常适合在 Docker 容器 或 临时环境 中使用。

语法:

python -m zipfile -e <压缩包名> <解压目标目录>

示例:

将 model_weights.zip 解压到当前目录(.):

python -m zipfile -e model_weights.zip .

原理:-m 参数将库模块当作脚本运行,-e 代表 extract(解压)。

方法二:标准库zipfile(基础脚本)

如果你需要在 Python 代码中集成解压功能,zipfile 是最标准的选择。建议使用 with 语句(上下文管理器),这样可以确保文件在使用后自动关闭,即使发生错误也不会占用文件句柄。

import zipfile
import os

def unzip_file(zip_src, dst_dir):
    # 如果目标目录不存在,则创建
    if not os.path.exists(dst_dir):
        os.makedirs(dst_dir)
    
    print(f"开始解压: {zip_src} ...")
    
    try:
        with zipfile.ZipFile(zip_src, 'r') as zfile:
            # extractall 会解压所有文件
            zfile.extractall(path=dst_dir)
        print(f"✅ 解压完成,文件已保存至: {dst_dir}")
        
    except zipfile.BadZipFile:
        print("❌ 错误: 文件已损坏或不是有效的 ZIP 文件")
    except Exception as e:
        print(f"❌ 发生未知错误: {e}")

# 调用示例
if __name__ == "__main__":
    unzip_file("merged_qwen3vl_model.zip", "./model_output")

方法三:进阶操作 (大文件进度条 + 中文乱码修复)

作为 AI 开发者,我们解压的模型往往高达几 GB 甚至几十 GB。如果没有进度条,对着黑屏傻等是非常焦虑的。此外,Windows 下打包的中文文件名在 Linux 下解压常会出现乱码。

下面的脚本解决了这两个痛点:

1. 依赖安装

我们需要 tqdm 来显示进度条(做 AI 的同学应该都有这个库):

pip install tqdm

2. 完整代码

import zipfile
import os
from tqdm import tqdm

def unzip_with_progress(zip_src, dst_dir):
    if not os.path.exists(dst_dir):
        os.makedirs(dst_dir)

    with zipfile.ZipFile(zip_src, 'r') as zfile:
        # 获取所有文件列表
        members = zfile.infolist()
        
        # 初始化进度条,total 是文件总大小
        total_size = sum(file.file_size for file in members)
        
        print(f"正在解压 {zip_src} 到 {dst_dir} ...")
        
        with tqdm(total=total_size, unit='B', unit_scale=True, unit_divisor=1024) as pbar:
            for member in members:
                # --- 中文乱码修复核心代码 (可选) ---
                # Windows 压缩包通常用 CP437 编码文件名,Linux 需要转回 GBK 或 UTF-8
                try:
                    member.filename = member.filename.encode('cp437').decode('gbk')
                except:
                    # 如果转换失败,保持原样(说明可能是 UTF-8)
                    pass
                # --------------------------------
                
                # 解压单个文件
                zfile.extract(member, dst_dir)
                
                # 更新进度条
                pbar.update(member.file_size)

if __name__ == "__main__":
    # 示例:解压一个大模型权重
    unzip_with_progress("large_model_weights.zip", "./models")

总结

场景推荐方法核心命令/库
临时操作/Docker环境方法一python -m zipfile -e file.zip .
通用脚本开发方法二import zipfile
大文件/体验优化方法三zipfile + tqdm

到此这篇关于Python解压ZIP文件的三种实用技巧的文章就介绍到这了,更多相关Python解压ZIP文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用python 制作词云特效详情

    利用python 制作词云特效详情

    这篇文章主要介绍了利用python 制作词云特效详情,​词云​也是数据可视化的一种形,根据关键词的出现频率而生成的一幅图像,人们只要扫一眼就能够明白其文章主旨,下文详细介绍,需要的朋友可以参考一下
    2022-04-04
  • Python如何根据关键字逐行提取文本内容问题

    Python如何根据关键字逐行提取文本内容问题

    这篇文章主要介绍了Python如何根据关键字逐行提取文本内容问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 详解PyCharm+QTDesigner+PyUIC使用教程

    详解PyCharm+QTDesigner+PyUIC使用教程

    这篇文章主要介绍了详解PyCharm+QTDesigner+PyUIC使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 使用Python手工计算x的算数平方根,来自中国古人的数学智慧

    使用Python手工计算x的算数平方根,来自中国古人的数学智慧

    本篇采用的计算方法既非二分法也非牛顿迭代法,而是把中国古代的手工计算平方根的方法转成代码来完成。代码有点烦杂,算是抛砖引玉吧,期待高手们写出更好的代码来
    2021-09-09
  • Python函数和模块的使用详情

    Python函数和模块的使用详情

    这篇文章主要介绍了Python函数和模块的使用详情,文章基于python的相关资料展开主题的具体介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • Python multiprocessing.Manager介绍和实例(进程间共享数据)

    Python multiprocessing.Manager介绍和实例(进程间共享数据)

    这篇文章主要介绍了Python multiprocessing.Manager介绍和实例(进程间共享数据),本文介绍了Manager的dict、list使用例子,同时介绍了namespace对象,需要的朋友可以参考下
    2014-11-11
  • python批量修改文件编码格式的方法

    python批量修改文件编码格式的方法

    这篇文章主要为大家详细介绍了python批量修改文件编码格式的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • python字典按照value排序方法

    python字典按照value排序方法

    在本篇文章里小编给各位分享一篇关于python字典按照value排序方法的相关文章,有兴趣的朋友们可以学习下。
    2020-12-12
  • Pandas Describe函数的具体使用

    Pandas Describe函数的具体使用

    在Pandas中,describe()能够为数据框中的数值列提供统计摘要信息,本文主要介绍了Pandas Describe函数的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python程序设计入门(1)基本语法简介

    Python程序设计入门(1)基本语法简介

    Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,这篇文章主要介绍了Python基本语法,需要的朋友可以参考下
    2014-06-06

最新评论