我们知道,Python使用rich
或tqdm
模块可以轻松创建进度条,那么如果我们自己写一个,需要几行代码呢?答案是4行。
显示效果
完整代码
完整代码如下,核心代码也就4行
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
def progress_bar(desc: str, index: int, total: int, bar_len: int = 40, light: str = "━", dark: str = "-"):
"""
:param desc: 进度条的描述文字
:param index: 数据前进进度
:param total: 数据长度
:param bar_len: 进度条的长度, 默认40
:param light: 表示已完成的字符,如█, ━,??,?
:param dark: 表示未完成的字符,如 ,-,?,⚪
:return:
"""
rate = index / total
if rate > 1:
rate = 1
forward = int(rate * bar_len)
tofu = forward * light + int(bar_len - forward) * dark
msg = f"\r{desc}{tofu} {rate * 100:.2f}% | {index}/{total} "
print(msg, end="")
if __name__ == '__main__':
for i in range(1, 201):
progress_bar("Download: ", i, 200)
time.sleep(0.01)
print()
for i in range(1, 201):
progress_bar("Download: ", i, 200, light="█", dark=" ")
time.sleep(0.01)
print()
for i in range(1, 201):
progress_bar("Download: ", i, 200, light="?", dark="⚪", bar_len=20)
time.sleep(0.01)
print()
for i in range(1, 201):
progress_bar("Download: ", i, 200, light="?", dark="?", bar_len=20)
time.sleep(0.01)
print()
for i in range(1, 201):
progress_bar("Download: ", i, 200, light="?", dark="?", bar_len=20)
time.sleep(0.01)
print()