Python tqdm 进度条自动换行

进度条是在编写长时间运行的任务时非常有用的工具,它可以实时显示任务的进度,让用户了解任务的执行情况。在 Python 中,tqdm 是一个非常流行的进度条库。然而,默认情况下,tqdm 进度条会占据一行,如果任务很长,进度条可能会超出终端的宽度。本文将介绍如何在 tqdm 进度条中实现自动换行。

安装 tqdm

首先,我们需要安装 tqdm 库。可以使用 pip 命令进行安装:

$ pip install tqdm

简单示例

让我们从一个简单的示例开始。我们将使用 range 函数模拟一个长时间运行的任务,并用 tqdm 进度条来显示任务的执行进度。

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.1)

以上代码创建了一个从 0 到 99 的循环,每次循环休眠 0.1 秒。在循环中,我们使用 tqdm 函数包装 range 函数,并将其作为迭代对象传递给 tqdmtqdm 将自动计算并显示进度条。

进度条自动换行

默认情况下,tqdm 进度条会占据一行,并在终端的右侧显示。如果任务的执行时间很长,进度条可能会超出终端的宽度,导致显示不完整。为了解决这个问题,可以使用 tqdm 提供的 dynamic_ncols 参数来实现进度条的自动换行。

from tqdm import tqdm
import time

for i in tqdm(range(100), dynamic_ncols=True):
    time.sleep(0.1)

在上面的示例中,我们将 dynamic_ncols 参数设置为 True。这将允许进度条根据终端的宽度自动调整其宽度,并在需要时自动换行。

进一步自定义

除了自动换行,tqdm 还提供了许多其他选项,可以根据需要进行自定义。以下是一些常用的选项:

  • desc:进度条的描述信息。
  • total:任务的总数量。
  • unit:任务数量的单位。
  • bar_format:进度条的格式字符串。
from tqdm import tqdm
import time

for i in tqdm(range(100), dynamic_ncols=True, desc='Processing', total=100, unit='steps', bar_format='{desc}: {percentage:3.0f}%|{bar:50}{r_bar}'):
    time.sleep(0.1)

在上面的示例中,我们使用 desc 参数来设置进度条的描述为 "Processing"。total 参数用于设置任务的总数量,这里设置为 100。通过 unit 参数,我们将任务的单位设置为 "steps"。最后,我们使用 bar_format 参数来自定义进度条的格式,将进度百分比显示为整数,并将进度条的长度设置为 50 个字符。

结论

在 Python 中使用 tqdm 库可以轻松地为长时间运行的任务创建进度条。本文介绍了如何实现 tqdm 进度条的自动换行,以及如何进行进一步的自定义。希望本文能够帮助你更好地使用 tqdm 库来监视和显示任务的执行进度。

参考文献:

  • [tqdm documentation](

以上是关于使用 tqdm 进度条自动换行的科普文章,希望对你有帮助!