在同一行

时间:2017-01-15 19:58:43

标签: python

我正在尝试编写代码非常简单:

我想打印一个迭代变量,但我不希望为每个循环打印所有行,我希望它会更新前一个。

示例:

for i in range(0,2000):
   print 'number is %d', %i 

错误的结果:

number is 0
number is 1
number is 2
number is 3
number is 4
number is 5
number is 6
...
...

我想要的是:

number is 0 

在第二次迭代:

number is 1 `(it will replace 0 and I don't want the previous 0 anymore).`

就像在一行中更新某事物的百分比一样。

Python中是否存在函数?

3 个答案:

答案 0 :(得分:1)

这将解决问题,并每1秒更新一次:

import sys
import time

for i in range(0,2000):
    sys.stdout.write('\rnumber is %d' %i)
    sys.stdout.flush()
    time.sleep(1)

答案 1 :(得分:0)

您想要的是Carriage Return\r

使用:

for i in range(0,2000):
    print "number is %d       \r" %i,

空格将使线条与先前的输出保持清晰。

答案 2 :(得分:0)

您可以尝试从this线程清除终端,或fuglede发布为重复的内容。

下面的代码在mac中对我来说很好,但如果你删除time.sleep()它会运行得如此之快,以至于你甚至看不到打印件。

import time, sys

for i in range(0, 20):
    print 'Number is: %d' % i
    time.sleep(.1)
    sys.stderr.write("\x1b[2J\x1b[H")