思路是用\r实现擦除
import time
def progress_bar(total, prefix='', suffix='', decimals=1, length=100, fill='█'):
"""
total: 进度条所代表的总量
prefix: 进度条前面显示的文本
suffix: 进度条后面显示的文本
decimals: 进度条数字的小数位数
length: 进度条的总长度 (以字符个数为单位)
fill: 用来填充进度条的字符
"""
completed = 0
percent = 0
bar = fill * 0 + ' ' * (length - 0)
while completed <= total:
percent = round(100 * completed / total, decimals)
filled_length = int(length * completed // total)
bar = fill * filled_length + ' ' * (length - filled_length)
print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end = '\r')
completed += 1
time.sleep(0.02)
print('\n')
# 示例用法:
progress_bar(1000, prefix='进度:', suffix='完成!', length=50, fill='█')
可以使用Python中的time模块和sys模块来实现进度条。具体思路是利用sys.stdout.write()函数将进度条输出到控制台,然后使用time.sleep()函数控制进度条的速度。
以下是示例代码:
import time
import sys
# 定义进度条函数
def progress_bar(num):
# 定义进度条的总长度
total_length = 50
# 计算已完成的进度条长度
done_length = int(num / 100 * total_length)
# 计算未完成的进度条长度
undone_length = total_length - done_length
# 输出进度条
sys.stdout.write("\r[{}{}] {}%".format("=" * done_length, " " * undone_length, num))
sys.stdout.flush()
# 模拟进度条的运行
for i in range(101):
progress_bar(i)
time.sleep(0.1)
运行以上代码,即可在控制台看到类似于Windows启动界面的文本进度条。