Python进度条tqdm的用法详解

Python进度条tqdm的用法详解

简介

Python中的tqdm是一个用于显示进度条的库,可以方便地在循环时显示任务的进度条,使代码更加美观而又直观。

tqdm 默认情况下可以显示进度条、已完成的百分比、已完成的任务数量、预计剩余时间等信息。

安装

通过pip安装tqdm库:

pip install tqdm

基本用法

使用tqdm最基本的用法是通过包裹一个可迭代对象来展示其循环进度:

from tqdm import tqdm

for i in tqdm(range(1000000)):
    pass

上面的代码演示了一个循环执行了 1000000 次的例子,可以看到tqdm以进度条的形式实时展示了整个循环的完成情况。

高级用法

1. 控制刷新时间

tqdm 默认的刷新时间是 0.5 秒,我们可以通过设置参数 mininterval 改变刷新时间:

from tqdm import tqdm

for i in tqdm(range(1000000), mininterval=0.1):
    pass

上面的代码将每 0.1 秒刷新一次进度。

2. 指定进度条样式

tqdm 支持多种不同的进度条样式,我们可以通过设置参数 bar_format 来指定:

from tqdm import tqdm

for i in tqdm(range(1000000), bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}'):
    pass

上面的代码展示了另一种不同样式的进度条格式,整个进度条被分为左、中、右三部分:

  • l_bar:指的是进度条的左部分,在左边空多少格都可以通过{n}控制,具体可以参考官方文档;
  • bar:指的是进度条本身,默认展示为 的形式,可以通过 {bar:<length.char>} 来控制长度和填充字符;
  • r_bar:指的是进度条的右部分,在右边空多少格同样可以通过{n}控制;
  • bar:-10b:指进度条背后的百分比,-10代表占位符宽度为10,b表示二进制形式表示百分比;

示例代码

示例1: 统计列表元素

下面这个例子演示了如何使用进度条遍历列表元素并且统计它们,同时设置了进度条的样式:

from tqdm import tqdm

data = [1,2,3,4,5,6,7,8]
result = 0

for i in tqdm(data, bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}'):
    # 统计数据
    result += i

print(result)

输出结果:

100%|███████████████████████████████████████████| 8/8 [00:00<00:00, 1689.94it/s]

36

示例2: 文件拷贝

下面这个例子演示了如何使用进度条将一个文件拷贝到另一个文件并且展示拷贝的进度:

from tqdm import tqdm

with open('input.mp4', 'rb') as f1, open('output.mp4', 'wb') as f2:
    # 文件总大小
    total_size = os.fstat(f1.fileno()).st_size
    # 读取并写入文件
    with tqdm(total=total_size, unit='B', unit_scale=True, unit_divisor=1024, desc='Copying file', miniters=1) as t:
        while True:
            # 一次读取1024*1024个字节(1M)
            data = f1.read(1024 * 1024)
            if not data:
                break
            # 写入数据
            f2.write(data)
            # 更新进度条
            t.update(len(data))

上面的代码分别使用了如下参数:

  • total_size表示拷贝的文件总大小;
  • unit='B'表示使用字节作为单位;
  • unit_scale=True表示自动根据文件大小调整单位(KB/MB/GB/...);
  • unit_divisor=1024表示进制基数,单位转换时用到;
  • desc='Copying file'表示进度条的描述信息;
  • miniters=1表示每秒钟最少刷新一次;

如果你尝试拷贝一个大文件,你将会看到一个进度条在不断增长,从而显示当前的进度。

总结

tqdm是一个很好用的Python进度条库,可以方便地展示循环进度,使代码在执行过程中更美观,在大规模数据处理和归类的场景下也可以为开发者节省不少时间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python进度条tqdm的用法详解 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 使用Python编写一个在Linux下实现截图分享的脚本的教程

    下面是详细讲解“使用Python编写一个在Linux下实现截图分享的脚本的教程”的完整攻略。 准备工作 安装Python和相关依赖包 首先要确保电脑上安装了Python环境,并且安装了相关依赖包。因为我们将会使用Pillow和PyQt5这两个Python库来实现截图和GUI界面。 注册一个Imgur账号 因为我们将把截图上传到Imgur网站上进行分享,所以需…

    python 2023年6月2日
    00
  • python利用文件时间批量重命名照片和视频

    我来详细讲解一下“Python利用文件时间批量重命名照片和视频”的完整攻略。 1. 获取文件的创建时间 首先,我们需要获取每个文件的创建时间,可以使用Python自带的os库中的stat()函数来实现,代码如下: import os def get_create_time(file_path): # 获取文件创建时间 create_time = os.sta…

    python 2023年6月3日
    00
  • python如何爬取动态网站

    要爬取动态网站,需要使用Selenium这样的工具。Selenium是一个自动化测试工具,它可以驱动浏览器并模拟用户的行为,从而实现网页自动化操作。下面是python爬取动态网站的攻略。 安装Selenium 安装Selenium的步骤如下: 安装Python,推荐使用Python 3.x版本。 安装pip,如果你使用Python 3.x版本,pip已经预装…

    python 2023年5月13日
    00
  • Python实现疫情通定时自动填写功能(附代码)

    下面是关于“Python实现疫情通定时自动填写功能(附代码)”的完整攻略: 一、背景介绍 随着新冠病毒的全球爆发,各地政府都纷纷要求民众填写健康问卷来做好疫情防控,而线下填写一般是每天一次,十分繁琐。为此,我们可以通过编写Python代码自动填写疫情通健康问卷,实现定时自动化,方便快捷。下面是具体的操作步骤: 二、操作步骤 1. 安装库和浏览器驱动 使用Py…

    python 2023年5月19日
    00
  • 如何使用Python还原数据库?

    要使用Python还原数据库,可以使用Python的内置模块subprocess和mysql命令行工具。以下是使用mysql还原MySQL数据库的整攻: 还原数据库 要还原数据库,可以使用以下命令: “`bashmysql -u [username] -p [database_name] [backup_file].sql 其中,`[username]`是…

    python 2023年5月12日
    00
  • 通过python爬虫赚钱的方法

    通过Python爬虫赚钱的方法 Python爬虫是一种非常强大的工具,可以帮助我们获取互联网上的各种数据。通过Python爬虫,我们可以获取并分析大量的数据,从而找到商机,实现收益。下面是通过Python爬虫赚钱的一些方法和技巧。 1. 数据商业化 通过Python爬虫可以获取各种各样的数据,我们可以将这些数据进行整理分析,然后将分析报告、行业研究等推广出去…

    python 2023年5月14日
    00
  • python urllib和urllib3知识点总结

    以下是针对“Python urllib和urllib3知识点总结”的完整攻略。 1. urllib和urllib3是什么? 1.1 urllib urllib是Python中一个内置的HTTP客户端库,提供了一系列的URL处理方法,包括:打开URL、读取URL返回的数据、提交数据到指定的URL等。在Python3.x中,urllib库已经被拆分成四个子模块:…

    python 2023年6月3日
    00
  • QT布局管理详解QVBoxLayout与QHBoxLayout及QGridLayout的使用

    下面是关于“QT布局管理详解QVBoxLayout与QHBoxLayout及QGridLayout的使用”的完整攻略。 布局管理器简介 QT布局管理器是QT GUI 设计界面中最重要的一部分,用于帮助开发者处理 Widget(QWidget)之间的布局关系,控制控件在可用空间中的大小、位置、对齐方式等。 在 QT 中,布局管理器主要由 QVBoxLayout…

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部