在控制台中正确打印\ r \ n

时间:2011-05-25 14:02:52

标签: python eclipse printing pydev

当我编写更新打印行的脚本时,例如:

for i in range(101):
    print(str(i) + "% \r", end="")

并使用终端(Ubuntu)运行此脚本,我得到正确的输出,更新了该行:

100%

但是,在Eclipse中使用Pydev,Eclipse控制台会这样做:

0%
1%
2%
...
100%

任何人都知道如何解决这个问题?提前谢谢!

2 个答案:

答案 0 :(得分:3)

这是因为每当您使用\ r或者不使用时,'print'总是会生成一个新行,请尝试使用sys.stdout:

import time, sys

for i in range(101):
    sys.stdout.write(str(i) + "% \r")
    sys.stdout.flush()
    time.sleep(.3)

答案 1 :(得分:0)

这似乎是旧的CR LF问题。根据您使用的操作系统和控制台,CR和LF作为线路终端将以不同的方式进行解释。

某些系统需要CRLF作为行尾。 有些系统只需要LF但是隐含地执行CR。 有些系统(比如你的系统)隐含地在每个CR之前做一个LF,虽然这是我第一次看到它。

也许有办法编辑PyDev控制台的换行设置。

编辑:或者您可以使用ANSI转义码来移动光标。就像左边的n个字符的CSInD或右边的n个字符的CSInC一样。