python - 进度条

为了了解程序运行的进度, 使用 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'
)

其中第二部分的解释:

当然, 也有第三方的专门的进度条模块:

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)