python:进度条的几种实现方式

2,007 阅读2分钟

0/参数网址

blog.csdn.net/FL162386312…

1/前言

相信大家对进度条一定不陌生了,比如在我们安装python的一些库包的时候,可以看到下载的进度,此外在下载文件时也可以看到类似的进度条,比如下图这种:

图片.png

应用场景:下载文件、任务计时等

tqdm库

是一个易用性强,扩展性高的python进度条库。
可以在python的长循环中添加一个进度提示信息,我们只需要封装任意的迭代器即可,例如tqdm(iterator)

安装:pip install tqdm
   
3/ 自动控制进度更新
  <1> 传入可迭代对象,代码如下
      from tqdm import *
      for i in tqdm( range(100) ):
          一系列操作command
     
  <2> 使用trange
      from tqdm import trange
      for i in trange(100):
         一系列操作
         
  <3> 为进度条增加描述
      在for循环外部初始化tqdm,可以作为描述信息打印在进度条中
      from tqdm import tqdm
      pbar = tqdm(["download","install","debug","run"])
      for char in pbar:
         with open("./a.txt","w") as w:
             w.write(char)
         # 设置描述
         pbar.set_description("Prosessing %s" % char)
         
4/ tqdm实现打印输出
     在使用tqdm显示进度条的时候,若代码中存在print,可能会使输出混乱,此时可以把print语句替换为tqdm.write,代码如下;
     import time
     from tqdm import * 
     for i in trange(100):
         time.sleep()
         if not (i % 2):
            tqdm.writ("done task (0)".format(i))

alive_progress库

alive_progress是一个动态的实时显示进度条库,详细的用法可以参考下方官方文档:
https://pypi.org/project/alive-progress/#description
from alive_progress import alive_bar
# 假设需要执行100个任务
with alive_bar(len(range(100))) as bar:
    for item in range(100): # 遍历任务
        bar()  # 显示进度
        """
        代码
        """
        # 假设这代码部分需要0.05s
        time.sleep(0.05)

PySimpleGUI库

PySimpleGUI也是一种动态进度条库,该库是自带GUI界面(基于PyQt,Tkinter等),
详细的用法可以参考下方官方文档
import PySimpleGUI as sg
count = range(100)
for i, item in enumerate(count):
    sg.one_line_progress_meter('实时进度条', i + 1, len(count), '-key-')
    """
    代码
    """
    # 假设这代码部分需要0.05s
    time.sleep(0.05)

图片.png

progressbar库

import progressbar
p = progressbar.ProgressBar()
# 假设需要执行100个任务,放到ProgressBar()中
for i in p(range(100)):
    """
    代码
    """
    # 假设这代码部分需要0.05s
    time.sleep(0.05)

图片.png