📜  cmd python中的进度条(1)

📅  最后修改于: 2023-12-03 14:59:57.170000             🧑  作者: Mango

CMD Python中的进度条

在命令行界面下,Python程序员经常需要在长时间运行的任务中显示进度条,以提供用户友好的反馈。本文将介绍一些常见的在CMD中实现进度条的方法。

1. 使用print函数

最简单的方法是使用print函数打印一系列字符,表示进度的变化。可以在同一行不断重复打印,使用\r回车符实现覆盖效果。以下是一个示例代码片段:

import time

total = 100
for i in range(total+1):
    progress = i / total * 100
    print(f'Progress: [{int(progress):3d}%]', end='\r')
    time.sleep(0.1)

这段代码会在CMD中显示一个不断变化的进度条,每隔0.1秒更新一次。

上述代码中,使用格式字符串和int函数将浮点数的进度转换为整数,并使用:3d指定了一个最小宽度为3个字符的整数输出。end='\r'参数将print函数的默认换行符替换为回车符,从而达到覆盖上一行输出的效果。

然而,这种方法存在一个缺点,即进度条无法直接获得用户交互,也无法被其他操作覆盖。

2. 使用第三方包

为了更好地显示进度条,并且在CMD中允许用户交互,可以使用一些第三方包。其中比较常用的包有tqdmprogressbar2

2.1. 使用tqdm

tqdm是一个功能强大的第三方包,提供了简单易用的进度条功能。下面是一个使用tqdm的示例代码片段:

from tqdm import tqdm
import time

total = 100
with tqdm(total=total) as pbar:
    for i in range(total):
        time.sleep(0.1)
        pbar.update(1)

上述代码使用with语句创建了一个tqdm对象,并通过total参数指定了总的迭代次数。

在循环中,使用pbar.update(1)更新进度条,每次更新后会自动显示当前进度。

2.2. 使用progressbar2

progressbar2是另一个常用的第三方包,提供了多种进度条样式和配置选项。以下是一个使用progressbar2的示例代码片段:

from progressbar import ProgressBar
import time

total = 100
progress = ProgressBar(maxval=total).start()
for i in range(total):
    time.sleep(0.1)
    progress.update(i+1)
progress.finish()

上述代码创建了一个ProgressBar对象,并通过maxval参数指定了最大值。

在循环中,使用progress.update(i+1)更新进度条,每次更新后会自动显示当前进度。

小结

本文介绍了在CMD Python中实现进度条的几种常见方法。无论是简单的使用print函数还是使用第三方包,都可以根据需求选择适合的方式来展示进度,提升用户体验。