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

python zipfile

在压缩文件时打印进度,通常可以通过计算文件的大小和已经处理的文件数来实现。为了实现一个简单的进度条,我们可以使用 tqdm 库来帮助我们显示进度。

安装 tqdm

首先,你需要安装 tqdm 库。如果还没有安装,可以通过以下命令来安装:

 

bash

pip install tqdm

示例代码:打印压缩进度

下面的代码展示了如何使用 tqdm 来显示文件压缩进度:

 

python

import zipfile
import os
from tqdm import tqdm

def zip_folder_with_progress(folder_path, zip_file_path):
    # 获取文件夹内所有文件的路径
    all_files = []
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            all_files.append(os.path.join(root, file))

    # 创建 zip 文件并添加文件
    with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zip_ref:
        # 使用 tqdm 显示进度条
        for file_path in tqdm(all_files, desc="压缩中", unit="file"):
            # 添加文件到压缩包
            zip_ref.write(file_path, arcname=os.path.relpath(file_path, folder_path))

    print(f"文件夹已压缩为 {zip_file_path}")

# 压缩文件夹并显示进度
folder_to_zip = 'my_folder'  # 替换成你要压缩的文件夹路径
zip_file_path = 'compressed_folder_with_progress.zip'  # 压缩后的目标文件路径
zip_folder_with_progress(folder_to_zip, zip_file_path)

python

代码说明:

  1. 获取文件列表:首先,我们用 os.walk() 遍历文件夹,获取所有文件的路径。
  2. tqdm 进度条:使用 tqdm 来包裹 all_files 列表,它会自动计算并显示压缩的进度。desc="压缩中" 显示进度条前的描述信息,unit="file" 表示进度单位是每个文件。
  3. arcname:我们使用 arcname 来确保压缩包内的文件结构与原始文件夹一致。

示例输出:

当你运行代码时,命令行会显示类似下面的进度条:

压缩中: 100%|██████████| 10/10 [00:00<00:00, 1234.56file/s]
文件夹已压缩为 compressed_folder_with_progress.zip

提示:

  • tqdm 会自动计算压缩进度,显示速度和已处理的文件数。
  • 如果你有很多小文件,进度条会比较顺利;如果文件非常大,进度更新可能会稍慢。

如果有任何问题或需要其他功能,随时告诉我!

相关文章:

  • 在spring项目中,引入mybatis
  • PCB设计常用布局布线方法
  • 错误 MSB3073 命令“setlocal“
  • Vue中环境配置的若干问题解决
  • 蓝桥杯刷题-dp-线性dp(守望者的逃离,摆花,线段)
  • HTML解析 → DOM树 CSS解析 → CSSOM → 合并 → 渲染树 → 布局 → 绘制 → 合成 → 屏幕显示
  • Redis存储​⑫​哨兵Sentinel_高可用实现方案
  • [C]基础10.深入理解指针(2)
  • 数据结构--排序
  • 一个std::async的示例
  • 鸿蒙Next-方法装饰器以及防抖方法注解实现
  • 项目管理的数字化转型:趋势与实践——从工具革新到效率革命
  • Spring MVC 的执行流程解析:从用户请求到响应返回
  • Linux设备驱动开发-UART驱动
  • Linux权限 -- 开发工具
  • 爬虫运行后如何保存数据?
  • 【深度学习神经网络学习笔记(二)】神经网络基础
  • 《Linux系统编程篇》System V信号量实现生产者与消费者问题(Linux 进程间通信(IPC))——基础篇(拓展思维)
  • .ltd是什么域名后缀?
  • Oracle数据库迁移到MySQL数据库
  • 做网站的心得/营销网站建设大概费用
  • 那个做图网站叫什么/广州优化网站排名
  • 做网站客户给不了素材/站长工具关键词
  • 网站做宣传域名什么好/中国企业500强
  • 阿里云上可以做网站吗/免费的个人网站html代码
  • 个人网站建设的计划书/网站页面布局和样式设计