提示信息

Python 制作进度条的18种最佳实现方法

蓝水假期 已关注

在 Python 中实现进度条可以提高程序的用户体验,尤其是在执行耗时操作时。下面是一些常用的 Python 库和方法来创建进度条:

  1. Tqdm:

    • 使用简单且功能强大的第三方库,支持命令行和 Jupyter Notebook。
    • 示例:
      from tqdm import tqdm for i in tqdm(range(100)): pass
  2. Progressbar2:

    • 一个灵活且可定制的进度条库。
    • 示例:
      from progressbar import ProgressBar pbar = ProgressBar() for i in pbar(range(100)): pass
  3. Rich:

    • 用于创建美观且丰富文本的终端显示工具,包含漂亮的进度条。
    • 示例:
      from rich.progress import track for i in track(range(100)): pass
  4. Cli Progress:

    • 专注于简单的命令行进度条的工具。
    • 示例:
      from cli_progress import ProgressBar pbar = ProgressBar(total=100) for i in range(100): pbar.update()
  5. Alive Progress:

    • 以动画形式展示进度条。
    • 示例:
      from alive_progress import alive_bar with alive_bar(100) as bar: for i in range(100): bar()
  6. Yaspin:

    • 创建带有旋转器的进度条。
    • 示例:
      from yaspin import yaspin with yaspin(text="Processing") as spinner: for _ in range(100): pass
  7. Halo:

    • 另一个用于创建旋转器和加载指示器的库。
    • 示例:
      from halo import Halo spinner = Halo(text='Loading', spinner='dots') spinner.start() for _ in range(100): pass spinner.stop()
  8. Progress:

    • 一个用于在命令行上显示文本进度条的简单库。
    • 示例:
      from progress.bar import Bar bar = Bar('Processing', max=100) for i in range(100): bar.next() bar.finish()
  9. tqdm_notebook:

    • 专为在 Jupyter Notebook 中使用的 tqdm 版本。
    • 示例:
      from tqdm.notebook import tqdm for i in tqdm(range(100)): pass
  10. ipywidgets:

    • 在 Jupyter Notebook 中使用的交互式小部件。
    • 示例:
      from ipywidgets import IntProgress, display import time progress = IntProgress(min=0, max=100) display(progress) for i in range(100): time.sleep(0.1) progress.value = i+1
  11. Click:

    • 一个用于创建命令行界面的工具,可以实现简单的进度条。
    • 示例:
      import click with click.progressbar(range(100)) as bar: for i in bar: pass
  12. Tenacity:

    • 更专注于重试机制的库,但可以合并进度显示。
    • 适合结合其他库来扩展进度显示功能。
  13. Loguru:

    • 虽然是一个日志记录库,但可以定制格式来实现进度条功能。
    • 需要手动实现进度计算。
  14. Progressist

    • 设计简单,易于扩展。
    • 示例:
      from progressist import ProgressBar p = ProgressBar(total=100) for i in range(100): p.update(i+1)
  15. Console (从 Rich 的一部分):

    • 即可用于控制台输出,也可以控制进度条。
    • 可通过扩展 Rich 的进度条实现复杂布局。
  16. Textual:

    • 基于文本用户界面的框架库,可以支持带有进度条的应用程序。
    • 需要创建自定义应用程序来显示进度。
  17. Ascii Bar:

    • 用于在终端中显示简单的 ASCII 进度条。
    • 需要一些简单的计算来更新进度。
  18. 手动实现

    • 如果不想依赖外部库,可以手动创建简单的 ASCII 或基于字符的进度显示。
    • 示例:
      import sys import time for i in range(101): time.sleep(0.1) sys.stdout.write(f'\rProgress: {i}%') sys.stdout.flush()

这些方法涵盖了从简单到复杂以及从文本到动画的各种实现方式。在选择最适合的实现方式时,应根据项目需求和环境选择合适的工具。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
蓝水假期 关注 已关注

最近一次登录:2024-11-20 10:24:47   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图