欢迎访问宙启技术站
智能推送

利用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()函数来更新进度条的显示。

运行上面的代码,你将看到一个实时更新的命令行进度条显示,表示任务的完成进度。