python学习笔记之--进度条
2022-03-07 本文已影响0人
itsenlin
进度条比较常见于程序安装、文件拷贝、系统编译等地方,在python中有很多库可以实现进度条,也可以自己实现进度条
进度条相关的模块
progress模块
progress模块里面实现了多种进度条样式
- Bar
- ChargingBar
- FillingSquaresBar
- FillingCirclesBar
- IncrementalBar
- PixelBar
- ShadyBar
每种进度条样式的使用方法都类似,下面给出两个实例
import time
from progress.bar import (IncrementalBar,ChargingBar, FillingSquaresBar)
def incrementalBar_progress():
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
bar = IncrementalBar("进度条", max = len(mylist))
for item in mylist:
bar.next()
time.sleep(0.1)
bar.finish()
def chargingBar_progress():
bar = ChargingBar("进度条1", max = 100)
for item in range(100):
bar.next()
time.sleep(0.1)
bar.finish()
if __name__ == '__main__':
incrementalBar_progress()
chargingBar_progress()
输出如下

progressbar模块
实例
import time
import progressbar
def progressbar_progress():
p = progressbar.ProgressBar()
for i in p(range(100)):
'''code'''
time.sleep(0.05)
if __name__ == '__main__':
progressbar_progress()
显示效果如下

alive_progress模块
实例
import time
from alive_progress import alive_bar
def alive_progress():
with alive_bar(len(range(100))) as bar:
for item in range(100):
bar()
'''code'''
time.sleep(0.05)
if __name__ == '__main__':
alive_progress()
显示效果如下

tqdm模块
实例
import time
from tqdm import tqdm
def tqdm_progress():
for i in tqdm(range(1, 60)):
''' 假设code执行0.1s '''
time.sleep(0.1)
if __name__ == '__main__':
tqdm_progress()
显示效果如下

不使用已有模块实现进度条
在网上看到的两个例子,搬运过来以做学习,感谢网友的分享
import sys
import time
def normal_progress():
for i in range(1, 101):
print("\r", end = "")
print("进度:{}%:".format(i), "#"*(i//2), end="")
sys.stdout.flush()
time.sleep(0.05)
print("")
def normal_progress_time():
t = 60
print("*****带时间的进度条****")
start = time.perf_counter()
for i in range(t + 1):
finsh = "#" * i
need_do = "_" * (t - i)
progress = (i/t)*100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(progress, finsh, need_do, dur), end="")
time.sleep(0.05)
print("")
if __name__ == '__main__':
normal_progress()
normal_progress_time()
显示效果如下

