打印只打印一行

时间:2011-04-29 01:42:27

标签: python

如何打印每次只打印一行

for i in range(1,100)
    print i

然后我希望它每次打印一行所以它会是:1然后1将被删除然后它将打印2依旧等等。

6 个答案:

答案 0 :(得分:3)

尾随逗号会抑制换行符,回车符会移动到该行的开头。

for i in range(1,100):
    print "\r",i,

这适用于Linux。

答案 1 :(得分:3)

像这样?

import sys
import time
>>> for i in range(1, 100):
...     sys.stdout.write(str(i))
...     sys.stdout.flush()
...     time.sleep(0.2)
...     sys.stdout.write("\b"*4)
<numbers count here>
>>>

答案 2 :(得分:1)

你可以试试这个:

import sys
import time
for num in range(100):
    sys.stdout.write("\r "+str(num))
    sys.stdout.flush()
    time.sleep(0.3)

答案 3 :(得分:0)

取决于您的平台。如果您可以使用curses模块,请使用它。如果您使用的是Windows,并且使用的是旧版本的Python(2.6及更早版本),则可以尝试Fredrik Lundh的Console

答案 4 :(得分:0)

在我看来,您正在寻找进度条。如果是这样,请查看一些ready-made ones

即使您没有制作进度条,其中的代码也需要做类似的事情。也许它可以给你一些线索。

由于我不是python的家伙,我不知道python的语法。对于Perl,您可以向插值引号添加\r字符,这会将光标移回到行的开头,从而覆盖下一次迭代中的任何先前文本。也许python有类似的特征。

perl -e 'print "$_\r" for (1..100); print "\n";'

答案 5 :(得分:0)

最简单的方法是使用退格字符\b,如

from __future__ import print_function
import sys, time

for i in range(1, 100):
  print('\b\b\b%d' % i, end='')
  sys.stdout.flush()
  time.sleep(0.1)