Python:使用 \r 在同一个位置打印不起作用?

cas*_*dra 6 python printing

我试图在完全相同的地方打印:

for i in range(10):
    print("ok\r"),
Run Code Online (Sandbox Code Playgroud)

但是,这会在不同的行中打印 10 个 ok:

ok
ok
...
Run Code Online (Sandbox Code Playgroud)

我也尝试将 \r 放在字符串的前面。在这种情况下,我得到一个空行然后 10 oks:

[blank]
ok
ok
...
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下

import sys

for i in range(10):
    sys.stdout.write('ok\r')
    sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的东西。我在 pyscripter 中使用 Python 2.7,我做错了什么?我也在 IDLE 中尝试过,当 \r 在末尾时,'okokokokokokokokok' 是结果,'ok ok ok ok ok ok ok ok' 是它在前面时的结果。

编辑:我在 Windows 7

任何帮助表示高度赞赏!

Pad*_*ham 6

试试下面的代码,它适用于 ubuntu,我添加了一个 time.sleep 调用,这样你就可以看到实际发生了什么:

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


alf*_*sin 0

对于蟒蛇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)
Run Code Online (Sandbox Code Playgroud)

根据我不久前写的要点。

对于python 3,不需要以下行:

from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)