介绍6种Python进度条,有需要的可以自行查看!
"""
Python各种进度条测试文件
参考链接:https://mp.weixin.qq.com/s/Ev0JRSNdqTs-cE1Zs2N1NQ
"""
import sys
import time
from tqdm import tqdm
from progress.bar import IncrementalBar
from progress.bar import Bar
from alive_progress import alive_bar
import PySimpleGUI as sg
class ProgressBar:
def __init__(self):
"""
使用Python3测试各种进度条
"""
pass
def ordinary_progress_bar(self):
"""
1. 普通进度条:在代码迭代运行中可以自己进行统计计算,并使用格式化字符串输出代码运行进度
"""
print('=' * 10 + '开始下载' + '=' * 10)
for i in range(1, 101):
print('\r', end='')
print(f'Download Process:{i}%', '▊' * (i // 2), end='')
sys.stdout.flush()
time.sleep(0.05)
print()
print('下载结束'.center(24, '='))
def time_progress_bar(self):
"""
2. 带时间的进度条:导入time模块来计算代码运行的时间,加上代码迭代进度使用格式化字符串来输出代码运行进度
"""
scale = 50
print('开始下载'.center(24, '='))
star_time = time.perf_counter()
# print(star_time)
for i in range(scale + 1):
a = '=' * i
b = '.' * (scale - i)
c = (i / scale) * 100
dur = time.perf_counter() - star_time
print('\r{:^3.0f}%[{}->{}]{:.2f}s'.format(c, a, b, dur), end='')
time.sleep(0.1)
print('\n' + '下载结束'.center(24, '='))
def tqdm_progress_bar(self):
"""
3. tqdm进度条:这是一个专门生成进度条的工具包,可以使用pip在终端进行下载,当然还能切换进度条风格
安装:pip install tqdm
简介:tqdm就是这个进度条最常用的一个方法,里面存一个可迭代对象
相关文档:https://tqdm.github.io/、https://github.com/tqdm/tqdm
"""
print('开始下载'.center(24, '='))
for i in tqdm(range(500), ncols=100, desc='Download', colour='green'):
# 模拟你的任务
time.sleep(0.01)
print('下载结束'.center(24, '='))
def progress_bar(self):
"""
4. progress进度条:你只需要定义迭代的次数、进度条类型并在每次迭代时告知进度条即可
安装:pip install progress
相关文档:https://pypi.org/project/progress/、https://github.com/verigak/progress
注意事项:PyCharm中运行不会正常显示,需要到命令行界面运行
"""
# mylist = [1, 2, 3, 4, 5, 6, 7, 8]
# bar = IncrementalBar('Download', max=len(mylist))
# for item in mylist:
# bar.next()
# time.sleep(0.5)
# bar.finish()
bar = Bar('Download', max=20, fill='▊', suffix='%(percent)d%% - %(elapsed)ds')
for i in range(20):
time.sleep(0.1)
bar.next()
bar.finish()
def alive_progress_bar(self):
"""
5. alive_progress进度条:顾名思义,这个库可以使得进度条变得生动起来,它比原来我们见过的进度条多了一些动画效果
安装:pip install alive-progress
相关文档:https://github.com/rsalmei/alive-progress
注意事项:PyCharm中运行不会正常显示,需要到命令行界面运行
"""
print('开始下载'.center(24, '='))
with alive_bar(100, title='Download', bar='blocks', spinner='message_scrolling') as bar:
for i in range(100):
time.sleep(0.1)
bar()
print('下载结束'.center(24, '='))
def GUI_progress_bar(self):
"""
6. 可视化进度条:
安装:pip install pysimplegui
相关文档:https://pysimplegui.readthedocs.io/en/latest/
"""
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
for i, item in enumerate(mylist):
sg.one_line_progress_meter('This is my progress meter!', i + 1, len(mylist), '-key-')
time.sleep(0.5)
if __name__ == '__main__':
pb = ProgressBar()
# pb.ordinary_progress_bar()
# pb.time_progress_bar()
pb.tqdm_progress_bar()
# pb.progress_bar()
# pb.alive_progress_bar()
# pb.GUI_progress_bar()