首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于打印状态栏和百分比的Python

用于打印状态栏和百分比的Python
EN

Stack Overflow用户
提问于 2010-06-09 07:27:00
回答 19查看 227.4K关注 0票数 186

要实现如下所示的状态栏:

代码语言:javascript
复制
[==========                ]  45%
[================          ]  60%
[==========================] 100%

我希望将其打印到stdout,并不断刷新它,而不是打印到另一行。该怎么做呢?

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2010-06-09 07:33:18

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

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

代码语言:javascript
复制
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 progressbar,如果您喜欢pip,也可以使用pip install progressbar

票数 167
EN

Stack Overflow用户

发布于 2010-06-09 07:32:03

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

代码语言:javascript
复制
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)

我不能百分之百确定这是否可以在所有系统上完全移植,但它至少可以在Linux和OSX上工作。

票数 282
EN

Stack Overflow用户

发布于 2015-04-17 23:14:28

我发现了有用的库https://github.com/noamraph/tqdm (https://github.com/tqdm/tqdm/,以前是tqdm )。它可以自动估计完成时间,并可用作迭代器。

用法:

代码语言:javascript
复制
import tqdm
import time

for i in tqdm.tqdm(range(1000)):
    time.sleep(0.01)
    # or other long operations

结果如下:

代码语言:javascript
复制
|####------| 450/1000  45% [elapsed: 00:04 left: 00:05, 99.15 iters/sec]

tqdm可以包装任何可迭代的对象。

票数 107
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3002085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档