当我编写更新打印行的脚本时,例如:
for i in range(101):
print(str(i) + "% \r", end="")
并使用终端(Ubuntu)运行此脚本,我得到正确的输出,更新了该行:
100%
但是,在Eclipse中使用Pydev,Eclipse控制台会这样做:
0%
1%
2%
...
100%
任何人都知道如何解决这个问题?提前谢谢!
答案 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一样。