利用sys.stdout.flush()函数实现实时的命令行进度条显示
发布时间:2023-12-18 21:04:11
在Python中,我们可以使用sys.stdout.flush()函数来刷新标准输出,并实现实时的命令行进度条显示。下面是一个简单的例子,其中我们使用一个循环来模拟一个耗时的任务,并使用进度条显示任务的完成进度。
import time
import sys
def progress_bar(total, prefix='', suffix='', decimals=1, length=50, fill='█'):
"""
用于显示命令行进度条的函数
"""
percent = ("{0:." + str(decimals) + "f}").format(100 * (total / float(length)))
filled_length = int(length * total // 100)
bar = fill * filled_length + '-' * (length - filled_length)
sys.stdout.write('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix))
sys.stdout.flush()
# 模拟一个耗时的任务
def time_consuming_task():
total = 100
for i in range(total):
time.sleep(0.1) # 模拟耗时操作
progress_bar(i + 1, prefix='进度:', suffix='完成', length=50)
time_consuming_task()
在上面的例子中,progress_bar()函数用于显示命令行进度条。它接受以下参数:
- total:任务的总量
- prefix:进度条前缀文本(可选,默认为空)
- suffix:进度条后缀文本(可选,默认为空)
- decimals:百分比显示的小数位数(可选,默认为1)
- length:进度条的长度(可选,默认为50)
- fill:进度条填充字符(可选,默认为'█')
在time_consuming_task()函数中,我们模拟了一个耗时的任务,循环进行一百次,并使用progress_bar()函数显示任务的完成进度。每次循环都会调用progress_bar()函数来更新进度条的显示。
运行上面的代码,你将看到一个实时更新的命令行进度条显示,表示任务的完成进度。
