Python:使用 \r 在相同位置打印无效?

6 投票
2 回答
8081 浏览
提问于 2025-04-18 14:41

我想在同一个地方打印内容:

for i in range(10):
    print("ok\r"),

但是,这样打印出来的10个“ok”却在不同的行上:

ok
ok
...

我试着把\r放在字符串的前面。这样的话,我得到的是一行空白,然后是10个“ok”:

[blank]
ok
ok
...

我还尝试了以下方法:

import sys

for i in range(10):
    sys.stdout.write('ok\r')
    sys.stdout.flush()

但结果还是一样。我在Python 2.7的pyscripter上,可能哪里出错了?我在IDLE中也试过,结果是当\r在字符串末尾时,输出是'okokokokokokokokokok',而当它在前面时,输出是' ok ok ok ok ok ok ok ok ok ok'。

补充:我用的是Windows 7。

非常感谢任何帮助!

2 个回答

0

对于Python 2

from __future__ import print_function
import time
import sys

for i in range(10):
    print('ok', end="\r")
    sys.stdout.flush()
    time.sleep(1)

这是我之前写的一个代码片段

对于Python 3,下面这一行就不需要了:

from __future__ import print_function
6

试试下面的代码,这段代码在ubuntu系统上可以运行。我加了一个time.sleep的调用,这样你可以看到实际发生了什么:

import time
for i in range(10):
    print(str(i),end='\r')
    time.sleep(.4)

撰写回答