如何打印状态栏和百分比?

新手上路,请多包涵

实现如下状态栏:

 [==========                ]  45%
[================          ]  60%
[==========================] 100%

我希望将其打印到标准输出,并不断刷新它,而不是打印到另一行。这该怎么做?

原文由 Stan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 266
2 个回答

您可以从 PyPI 获得一个名为 progressbar 的 Python 模块,它实现了此类功能。如果您不介意添加依赖项,这是一个很好的解决方案。否则,请选择其他答案之一。

如何使用它的一个简单示例:

 import progressbar
from time import sleep
bar = progressbar.ProgressBar(maxval=20, \
    widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])
bar.start()
for i in xrange(20):
    bar.update(i+1)
    sleep(0.1)
bar.finish()

要安装它,您可以使用 easy_install progressbarpip install progressbar 如果您喜欢 pip。

原文由 icktoofay 发布,翻译遵循 CC BY-SA 3.0 许可协议

'\r' 字符(回车)将光标重置到该行的开头,并允许您覆盖该行之前的内容。

 from time import sleep
import sys

for i in range(21):
    sys.stdout.write('\r')
    # the exact output you're looking for:
    sys.stdout.write("[%-20s] %d%%" % ('='*i, 5*i))
    sys.stdout.flush()
    sleep(0.25)

我不是 100% 确定这是否可以在所有系统上完全移植,但它至少适用于 Linux 和 OSX。

原文由 Mark Rushakoff 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题