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 环境下的解压难题!如果觉得有用,欢迎点赞收藏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1194253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年成都TD板厂家排行榜,看看谁是行业领头人

2026年成都TD板厂家排行榜,看看谁是行业领头人随着西南地区基建工程的蓬勃发展与高端制造产业的升级迭代,TD板作为兼具高强度、易施工、耐腐蚀等优势的优质建材,市场需求持续攀升。在竞争激烈的成都TD板市场中,哪些…

《透视 ImGui:从底层原理到面试通关》第二讲:渲染后端集成 —— 从内存指令到屏幕像素

第二讲&#xff1a;渲染后端集成 —— 从内存指令到屏幕像素 一、 核心概念&#xff1a;后端 (Backend) 到底是什么&#xff1f; Dear ImGui 本身是一个纯 C 的逻辑库。它不包含任何绘图代码&#xff08;如 glDrawArrays 或 pd3dCommandList->Draw&#xff09;。 ImGui 核心…

Shopify平台API的对接开发

对接Shopify API&#xff08;特别是针对跨境电商业务&#xff09;主要遵循以下标准化流程。Shopify目前的开发生态高度倾向于 GraphQL 和 Shopify Functions&#xff0c;传统的REST API已逐步退居二线。以下是详细的对接流程&#xff1a;1. 开发者账户与应用环境准备首先需要确…

2026液压万能材料试验机国内品牌实力排行榜:头部厂家技术参数与应用场景测评

在工业制造、材料研发、质量检测等领域,液压万能材料试验机作为核心测试设备,承担着材料拉伸、压缩、弯曲、剪切等多项力学性能检测任务,其精度、稳定性与适配性直接决定了测试结果的可靠性,进而影响产品研发迭代、…

【Python高手进阶必备】:深入解析random、secrets、numpy等5大随机数模块

第一章&#xff1a;Python随机数生成概述 Python 提供了强大的内置模块来生成随机数&#xff0c;广泛应用于模拟、游戏开发、密码学和机器学习等领域。其核心工具位于 random 模块中&#xff0c;能够生成伪随机数序列&#xff0c;满足大多数常规需求。 核心模块与功能 random…

无锡研究生留学中介top10有哪些?收费透明、服务对比详解

无锡研究生留学中介top10有哪些?收费透明、服务对比详解一、无锡研究生留学中介如何选择?解答高频搜索问题在2026年1月10日的今天,许多无锡高校,例如江南大学、无锡太湖学院的学子在规划硕士留学时,常常会在搜索引…

Java版LeetCode热题100之柱状图中最大的矩形:单调栈深度解析与实战指南

Java版LeetCode热题100之柱状图中最大的矩形&#xff1a;单调栈深度解析与实战指南本文将全面剖析 LeetCode 热题第84题《柱状图中最大的矩形》&#xff0c;从题目理解、暴力解法、单调栈优化&#xff08;双次遍历 vs 单次遍历&#xff09;&#xff0c;到代码实现、复杂度分析、…

【波束成形】双功能雷达与通信系统Matlab仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

在宁波选择研究生留学机构,如何挑选top10确保无隐形消费

在宁波选择研究生留学机构,如何挑选top10确保无隐形消费一、宁波学子如何规避留学中介消费陷阱,科学筛选头部机构?撰写本文时,时间是2026年1月9日。不少宁波高校的学子在筹划研究生留学时,常面临几个核心困扰:网…

99%的Python开发者踩过的坑:浅拷贝与深拷贝的5大误解,你中招了吗?

第一章&#xff1a;99%的Python开发者踩过的坑&#xff1a;浅拷贝与深拷贝的5大误解&#xff0c;你中招了吗&#xff1f;在Python开发中&#xff0c;对象的复制看似简单&#xff0c;实则暗藏玄机。许多开发者误以为赋值操作就是“复制”&#xff0c;殊不知这往往只是创建了引用…

揭秘Python随机数生成器:5个你必须知道的实用技巧

第一章&#xff1a;Python随机数生成器的核心机制Python 的随机数生成能力主要由内置的 random 模块提供&#xff0c;其底层依赖于梅森旋转算法&#xff08;Mersenne Twister&#xff09;。该算法是一种伪随机数生成器&#xff08;PRNG&#xff09;&#xff0c;具有极长的周期&…

聊聊 C++ 中那些容易踩坑的运算符

C++ 里的 :: . < << this this-> 各自是什么、怎么用、底层原理? 这几个关键符号到底干嘛的? :: —— 作用域解析运算符(scope resolution) 作用:告诉编译器“我要用的是某个作用域里的名称”。 常见…

UE5 C++(42):创建 timeLine 时间轴

&#xff08;214&#xff09; &#xff08;215&#xff09; 谢谢

郑州top10研究生留学中介推荐,稳定可靠保障您的留学选择

郑州top10研究生留学中介推荐,稳定可靠保障您的留学选择一、郑州学子如何筛选可靠的研究生留学中介?在郑州市,每年都有大量本科毕业生计划赴海外深造。面对市面上众多的留学服务机构,许多同学与家长常常感到困惑。…

快速落地 JT/T 808 服务端:jt-framework

快速落地 JT/T 808 服务端:jt-framework 快速落地 JT/T 808 服务端:jt-framework 一、项目名称 jt-framework 一句话简介:基于 Spring Boot 的 JT/T 808(并扩展 JT/T 1078、附件服务器、Dashboard)服务端框架,提…

【高薪程序员必会知识点】:深拷贝 vs 浅拷贝——3个实战案例带你彻底掌握

第一章&#xff1a;深拷贝与浅拷贝的核心概念解析在编程中&#xff0c;对象和数据结构的复制操作看似简单&#xff0c;实则暗藏玄机。当一个变量引用复杂数据类型&#xff08;如对象、数组&#xff09;时&#xff0c;直接赋值往往不会创建新的独立副本&#xff0c;而是产生指向…

Python批量处理Word文档:告别重复劳动的3个核心技巧

第一章&#xff1a;Python自动化办公与Word处理概述在现代办公环境中&#xff0c;文档处理占据了大量重复性工作时间。利用Python进行自动化办公&#xff0c;尤其是对Microsoft Word文档的批量生成、修改与格式化操作&#xff0c;已成为提升效率的重要手段。通过python-docx等第…

2026年广州诚信的汽配加盟商城,汽车配件加盟,连锁汽配加盟厂家综合实力参考

引言在 2026 年的广州,汽配加盟行业呈现出蓬勃发展的态势。为了给广大投资者提供客观、公正、真实的汽配加盟参考,我们依据相关权威数据和科学的测评方法,对众多汽配加盟商城、汽车配件加盟品牌以及连锁汽配加盟厂家…

20260121人工智能作业v2

文章目录一、核心命令清单&#xff08;逐条执行&#xff0c;需root权限&#xff09;1. 校验并创建用户组 dev_team2. 创建用户 alice&#xff08;指定主组安全配置&#xff09;3. 创建用户 bob&#xff08;同alice&#xff0c;仅用户名不同&#xff09;4. 创建 /opt/project 目…

2025年国内靠谱的假肢公司推荐与深度解析

面对肢体差异,选择一家专业、可靠且充满人文关怀的假肢公司,是开启新生活的关键一步。市场上服务机构众多,但技术水平、服务质量、后续支持参差不齐,用户常面临“价格不透明”、“装配后不适”、“售后服务缺失”等…