有时候通过列表循环处理程序,等待过程需要显示进度,因此做了个简单的进度条,代码如下:
# !/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 time
from progress import progress
temp_list = [x for x in range(1, 20)]
for _ in progress(temp_list):
"""
可添加自己的代码
"""
time.sleep(0.5)