当前位置: 首页 > news >正文

python unzip file

要在 Python 中解压文件并显示进度,我们需要在解压过程中跟踪文件的提取进度。由于 zipfile 模块本身不直接支持进度显示,我们可以通过手动计算并使用 tqdm 库来显示进度条。

安装 tqdm

首先,确保你已经安装了 tqdm 库,用于显示进度条:

 

bash

pip install tqdm

示例代码:解压 .zip 文件并显示进度

 

python

import zipfile
import os
from tqdm import tqdm

def unzip_with_progress(zip_file_path, extract_to_folder):
    # 打开 zip 文件
    with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
        # 获取压缩包中的所有文件列表
        all_files = zip_ref.namelist()

        # 如果目标文件夹不存在,创建它
        os.makedirs(extract_to_folder, exist_ok=True)

        # 使用 tqdm 显示进度条,循环解压文件
        with tqdm(total=len(all_files), desc="解压中", unit="file") as pbar:
            for file in all_files:
                # 解压每个文件到目标文件夹
                zip_ref.extract(file, path=extract_to_folder)
                # 更新进度条
                pbar.update(1)

    print(f"文件已解压到 {extract_to_folder}")

# 解压文件并显示进度
zip_file_path = 'your_file.zip'  # 替换成你的 zip 文件路径
extract_to_folder = 'extracted_folder'  # 替换成解压目标文件夹
unzip_with_progress(zip_file_path, extract_to_folder)

python

代码说明:

  1. 获取文件列表:使用 zip_ref.namelist() 获取 .zip 文件中所有文件的名称。这样可以通过 tqdm 显示每个文件的解压进度。
  2. tqdm 进度条tqdm 用于显示进度条,它会根据文件的数量(len(all_files))来显示进度。desc="解压中" 是进度条前的描述信息,unit="file" 表示单位是文件。
  3. 文件解压:通过 zip_ref.extract() 来解压每个文件到指定的目标文件夹。
  4. 进度更新:每解压一个文件,调用 pbar.update(1) 来更新进度条。

示例输出:

当你运行这个脚本时,命令行会显示类似下面的进度条:

解压中: 100%|██████████| 10/10 [00:01<00:00, 9.45file/s]
文件已解压到 extracted_folder

提示:

  • 这个方法对于压缩包中的文件较多时非常有效。
  • 如果文件非常大,进度条更新的速度可能会受到磁盘 I/O 或 CPU 限制的影响。

如果你有更多的要求,或者需要进一步的帮助,随时告诉我!

相关文章:

  • Adobe After Effects的动画制作
  • iOS手机App爬虫- (1) Mac安装Appium真机运行环境
  • 神经网络八股(4)
  • 【探寻C++之旅】第六章:STL
  • 力扣2454. 下一个更大元素 IV
  • 千峰React:函数组件使用(3)
  • 虚实结合双机导航-gazebo-ros
  • Nacos + Dubbo 实现微服务的Rpc调用
  • # GaussDB 学习进阶路线-基础篇:从零入门到核心操作实战指南
  • 中国历代政治得失读书笔记
  • 【Win10】Anaconda + Pycharm 环境搭建教程
  • Linux下安装Nginx服务及systemctl方式管理nginx详情
  • Linux 基本开发工具的使用(yum、vim、gcc、g++、gdb、make/makefile)
  • 前景光明的Goggles($GOGLZ)登陆SONIC
  • FreeRTOS系列---信号量详解
  • ktransformers 上的 DeepSeek-R1 671B open-webui
  • Jmeter插件下载及安装
  • 【HTML— 快速入门】HTML 基础
  • word中对插入的图片修改背景色
  • 机器人“战场”:创新、落地与未来
  • 十大奢侈品牌logo图片/深度优化
  • 需要企业网站建设/网上营销的平台有哪些
  • 网页站点怎么命名/建立网站需要什么
  • 潍坊市做网站的公司/百度快速收录提交工具
  • 怎么做淘宝客网站赚钱/青岛seo服务
  • 2015做网站前景/网站关键词快速排名技术