python tqdm 进度条 结合对象集合

发布时间 2023-11-13 19:36:27作者: 雨梦大木

包含

1.单独数据的进度条

2.复杂对象集合的进度条

3.结合 excel 读取以及业务操作做到全局进度条

 

from tqdm import tqdm
import time

from openpyxl import Workbook, load_workbook


# 集合类型的进度条
def list_tqdm():
    # 生成随机数
    data = list()
    for i in range(1, 100):
        data.append(i)
    # desc 前缀描述
    # unit 单位
    for i in tqdm(range(len(data)), desc='用法 1', unit='单位'):
        time.sleep(0.01)

    with tqdm(range(len(data)), desc='用法 2', unit='单位') as tbar:
        for i in tbar:
            tbar.update()
            time.sleep(0.01)

#对象迭代器
def iterator_tqdm_1():
    data = list()
    for i in range(1, 100):
        data.append({
            'index':str('111')+str(i),
            'name':str(i)
        })
    data_iter=iter(data)
    for i in tqdm(iterable=data_iter, total=len(data), desc='用法 3', unit='单位'):
        # i 作为对象,必须指定 total
        time.sleep(0.01)


def iterator_tqdm_2():
    data = list()
    for i in range(1, 100):
        data.append({
            'index':str('111')+str(i),
            'name':str(i)
        })
    data_iter=iter(data)

    with tqdm(iterable=data_iter, total=len(data), desc='用法 4', unit='单位') as tbar:
        for i in tbar:
            # i 作为对象,必须指定 total
            tbar.update(1)
            time.sleep(0.01)

#结合 excel
def excel_tqdm():
    #读取 excel
    wb = load_workbook('static/9999.xlsx', 'r+')
    #获得所有 sheet 页码
    sheet_names = wb.sheetnames
    for name in sheet_names:
        ws = wb[name]
        insert_list = []
        #每个 sheet 页码产生一个进度条
        with tqdm(iterable=ws.iter_rows(min_row=4, min_col=1, max_col=13), desc=f'test_excel \t {name}',
                  total=(ws.max_row - 4), unit='') as tbar:
            #循环行
            for row in tbar:
                #单行的业务操作
                #循环列
                for cell in row:
                    pass
            tbar.update(1)

if __name__ == '__main__':
    list_tqdm()
    iterator_tqdm_1()
    iterator_tqdm_2()
    excel_tqdm()