如何使用\ r使Python在同一行上打印?

时间:2014-03-21 17:11:10

标签: python newline carriage-return

有人可以彻底解释一下'\ r'在Python中是如何工作的吗? 以下代码为什么不在屏幕上打印出任何内容?

#!/usr/bin/python

from time import sleep

for x in range(10000):
    print "%d\r" % x,
    sleep(1)

4 个答案:

答案 0 :(得分:1)

'\ r'只是另一个ASCII码字符。根据定义,它是CR或回车。它是使用的终端或控制台,将决定如何解释它。 Windows和DOS系统通常希望每一行以CR / LF结尾('\ r \ n'),而Linux系统通常只是LF('\ n'),而经典的Mac只是CR('\ r');但即使在这些单独的系统上,您通常也可以告诉终端仿真器如何解释CR和LF字符。

历史上(作为打字机工作),LF将光标撞到下一行,CR将其带回第一列。

要回答关于为什么没有打印的问题:删除打印行末尾的逗号。

答案 1 :(得分:1)

请改为:

print "\r%d" % x,

答案 2 :(得分:1)

您的输出正在缓冲,因此它不会立即显示。当它发生时,它被shell或解释器提示破坏了。

每次打印时通过刷新解决此问题:

#!/usr/bin/python

from time import sleep
import sys

for x in range(10000):
    print "%d\r" % x,
    sys.stdout.flush()
    sleep(1)

答案 3 :(得分:0)

这与\r无关。问题是,语句中的结尾print。它尝试打印该行的最后一个值,而,正在创建一个最后一个值为空的元组。丢失,,它将按预期工作。

修改

我不确定说它创建一个元组是否正确,但无论哪种方式都是您问题的根源。