为了了解程序运行的进度, 使用 print
打印进度是最直观的做法, 如:
import time
total = 100
for i in range(total):
time.sleep(1)
print(str(i))可以优化一些, 加上 end='\r', 这样输出都在一行,
节省屏幕空间1. 如将上面的 print部分换成:
print(str(i), end='\r')但如果能加上一个进度就更好了, 所以 print 又可以这样:
print(
'进度',
f'|{"█"*((i+1)*50//total):50}|',
end = '\r'
)其中第二部分的解释:
f''是格式化字符串- 起始的
|是标记进度条起始的字符, 如果没有它, 进度条的结束位置不明确. ████:50这是格式化字串的一个格式, 表示这个字串占位50个字, 当前有三个█字填充, 剩下的空位填充空格. 这样就造成了一个进度条的样子.█*3是一个简洁的python表达, 代表并排的3个该字符(i+1)是为了调整让计数从1开始2*50//total这是为了得出当前的位置. (不太理解)
当然, 也有第三方的专门的进度条模块:
progress
import time
from progress.bar import Bar
total = 100
with Bar('进度', max=total) as bar:
for i in range(steps):
time.sleep(1)
bar.next()其有不同的样式, 通过更改 progress.bar 后面的
bar 来更改样式.
Alive Progress
这个逻辑和progress类似, 但花哨一些.
import time
from alive_progress import alive_bar
total = 100
with Bar('进度', max=total) as bar:
for i in range(steps):
time.sleep(1)
bar()tqdm
这个相对简单, 给迭代的对象加上tqdm函数即可:
import time
from tqdm import tqdm
total = 100
for i in tqdm(range(total)):
time.sleep(1)