Python制作简单的进度条
有时候通过列表循环处理程序,等待过程需要显示进度,因此做了个简单的进度条,代码如下:
# !/usr/bin/python3.9# -*- coding: utf-8 -*-import sys__all__ = ['progress']class Progress(object): counter = 0 def __init__(self): pass @classmethod def progress_bar(cls, factor, counter, total, tip): """ 绘制进度条 Args: factor: 进度条字符的个数因子 counter: 当前的次数;取列表循环的此时 total: 总长度。取列表的长度 tip: 进度条前面的提示 Return: """ _output = sys.stdout # 百分比 percentage = counter / total # 进度条风格 fashion_string = f"{tip}:{'█' * factor * cls.counter} {percentage:3.1%}\r" _output.write(fashion_string) _output.flush() @classmethod def progress(cls, obj: list, tip='进度'): """ 进度条效果,显示进度以及百分比。目前传入对象仅支持列表对象。该函数是生成器 Args: obj:列表参数 tip: 进度条前面的提示信息 yield: 返回列表元素 """ # 取列表长度 length = len(obj) # 利用生成器,返回列表值并显示进度条及百分比 for value in obj: cls.progress_bar(5, cls.counter, length, tip) yield value cls.counter += 1 cls.progress_bar(5, cls.counter, length, tip)progress = Progress.progress
实际应用:
# !/usr/bin/python3.9# -*- coding: utf-8 -*-import timefrom progress import progresstemp_list = [x for x in range(1, 20)]for _ in progress(temp_list): """ 可添加自己的代码 """ time.sleep(0.5)