循环指示器的进度

5

可能重复:
Python进度条

我正在运行一个for循环10,000次,但是在循环内部有许多计算正在进行。我想要在控制台上打印出进度信息,告诉我程序在循环中进行到哪个步骤,还需要等待多久。

基本循环如下:

n = 10000 
for i in range(n):
   do_stuff_method()
   if(i%100 == 0):
      print (float(i)/n)*100,

这将在同一行上打印出一个百分比信息,但问题是我下一个要打印的内容也会在同一屏幕上打印出来。此外,由于有99个输出,控制台变得非常宽,并且需要大量滚动。
我真正想要的是控制台在同一行上打印出当前完成的百分比和预计完成时间并替换之前已经打印过的内容,这样就不需要进行大量滚动了。
这可以做到吗?
谢谢, Davy

此外,Python 还有一个名为“进度条”的包可以实现这个功能。你可以从 PyPI 上查看它:http://pypi.python.org/pypi/progressbar/2.2 - jmetz
1个回答

8
在您的情况下,您可以通过更改打印行来轻松完成此操作: ```html

在您的情况下,您只需更改打印行即可:

```
print "\r{0}".format((float(i)/n)*100),

或者你可以尝试这样做,而不是使用print:

sys.stdout.write("\r{0}".format((float(i)/n)*100))
sys.stdout.flush()

你可以尝试我在答案中提供的另一个解决方案,它们都适用于我。 - iblazevic
是的。我尝试过带逗号和不带逗号,以及带\r和不带\r,但它们都只会在同一行或新行上打印。我正在寻找一种可以将新的%值打印在旧的%值上方的方法。 - Davy Kavanagh
我也尝试了第二个答案,但每个值仍然在新行上。很奇怪,这可能与我的控制台有关。如果是在Mac上的Eclipse中的控制台,会不会有所不同? - Davy Kavanagh
无法确切回答你,但你可以尝试从常规终端运行它。 - iblazevic
抱歉,我在普通终端中尝试了一下。第二个解决方案可行。谢谢并再次为混淆道歉。 - Davy Kavanagh
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接