news 2026/9/29 20:59:39

Python 实用技:解压 ZIP 文件的三种姿势(从一行命令到进阶脚本)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 实用技:解压 ZIP 文件的三种姿势(从一行命令到进阶脚本)

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语句(上下文管理器),这样可以确保文件在使用后自动关闭,即使发生错误也不会占用文件句柄。

importzipfileimportosdefunzip_file(zip_src,dst_dir):# 如果目标目录不存在,则创建ifnotos.path.exists(dst_dir):os.makedirs(dst_dir)print(f"开始解压:{zip_src}...")try:withzipfile.ZipFile(zip_src,'r')aszfile:# extractall 会解压所有文件zfile.extractall(path=dst_dir)print(f"✅ 解压完成,文件已保存至:{dst_dir}")exceptzipfile.BadZipFile:print("❌ 错误: 文件已损坏或不是有效的 ZIP 文件")exceptExceptionase:print(f"❌ 发生未知错误:{e}")# 调用示例if__name__=="__main__":unzip_file("merged_qwen3vl_model.zip","./model_output")

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

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

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

1. 依赖安装

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

pipinstalltqdm

2. 完整代码

importzipfileimportosfromtqdmimporttqdmdefunzip_with_progress(zip_src,dst_dir):ifnotos.path.exists(dst_dir):os.makedirs(dst_dir)withzipfile.ZipFile(zip_src,'r')aszfile:# 获取所有文件列表members=zfile.infolist()# 初始化进度条,total 是文件总大小total_size=sum(file.file_sizeforfileinmembers)print(f"正在解压{zip_src}到{dst_dir}...")withtqdm(total=total_size,unit='B',unit_scale=True,unit_divisor=1024)aspbar:formemberinmembers:# --- 中文乱码修复核心代码 (可选) ---# Windows 压缩包通常用 CP437 编码文件名,Linux 需要转回 GBK 或 UTF-8try: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

希望这篇笔记能帮你解决 Linux 环境下的解压难题!如果觉得有用,欢迎点赞收藏。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 9:00:11

绿幕特效素材避坑指南:10个免费网站推荐,别踩雷!

根据《2025年中国数字创意产业发展报告》显示&#xff0c;2025年国内视频创作者对绿幕特效视频素材的需求同比增长35%&#xff0c;其中免费素材的搜索量占比高达68%。但很多新手创作者在找素材时&#xff0c;要么像大海捞针一样找不到合适的&#xff0c;要么下载到低清模糊的内…

作者头像 李华
网站建设 2026/9/29 15:01:39

【开题答辩全过程】以 基于python的校园志愿服务管理系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/9/25 19:01:01

2026 AI MARKET ANALYSIS原圈科技AI市场分析终极榜单不懂AI竞品分析将落后!

原圈科技在AI市场分析领域表现突出&#xff0c;其智慧营销智能体矩阵被视为高净值行业的"AI营销大脑"。本文将为你揭晓2026年AI市场分析平台TOP榜单&#xff0c;并深入探讨原圈科技如何凭借在数据深度、运营闭环和私域安全方面的绝对优势&#xff0c;帮助企业实现智能…

作者头像 李华
网站建设 2026/9/26 13:33:25

别再瞎用threading了!3类CPU密集型任务必须切换到多进程的铁证

第一章&#xff1a;Python多线程与多进程的核心差异Python的并发编程模型中&#xff0c;多线程&#xff08;threading&#xff09;与多进程&#xff08;multiprocessing&#xff09;虽目标相似——提升程序执行效率&#xff0c;但其底层机制、适用场景和行为表现存在本质区别。…

作者头像 李华
网站建设 2026/9/26 6:56:13

必读感悟:软件测试中的心理健康挑战

软件测试与心理健康的隐形纽带 在快速迭代的软件开发世界中&#xff0c;软件测试作为质量保障的核心环节&#xff0c;常常被喻为“系统的守门人”。然而&#xff0c;测试从业者面临的心理健康挑战却鲜少被关注。高强度的工作节奏、重复性任务的压力以及角色边缘化的现实&#…

作者头像 李华
网站建设 2026/9/28 11:33:30

‌开发者心声:工作与生活的平衡艺术

当测试成为生活的主旋律‌ 作为一名软件测试工程师&#xff0c;我们的工作往往被误解为“找bug的工匠”&#xff0c;实则肩负着产品质量的守护者角色。在敏捷开发的时代&#xff0c;测试周期压缩、持续集成&#xff08;CI/CD&#xff09;流程的加速&#xff0c;让加班成为常态…

作者头像 李华