繁体   English   中英

print 只打印一行

[英]print that only prints one line

你如何让 print 每次只打印一行

for i in range(1,100)
    print i

但后来我希望它每次打印一行,所以它会是:1,然后 1 将被删除,然后它会打印 2,依此类推。

尾随逗号抑制换行,回车移动到行首。

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

这适用于 Linux。

像这样?

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>
>>>

你可以试试这个:

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

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

在我看来,您正在寻找进度条。 如果是这样,请查看一些现成的

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

因为我不是 python 人,所以我不知道 python 语法。 对于 Perl,您可以将\r字符添加到插值引号中,这会将 cursor 移回行首,从而在下一次迭代中覆盖任何先前的文本。 或许 python 也有类似的特点。

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

最简单的方法是使用退格符\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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM