问题描述
|
当我编写更新打印行的脚本时,例如:
for i in range(101):
print(str(i) + \"% \\r\",end=\"\")
并使用终端(Ubuntu)运行此脚本,我得到正确的输出,该输出更新了该行:
100%
但是,在Eclipse中使用Pydev,Eclipse控制台可以做到这一点:
0%
1%
2%
...
100%
有人知道怎么修这个东西吗?提前致谢!
解决方法
这似乎是旧的CR LF问题。根据所使用的操作系统和控制台,CR和LF作为线路终端的解释会有所不同。
某些系统需要CRLF作为行尾。
一些系统仅需要LF,但是隐式地执行CR。
有些系统(如您的系统)在每个CR之前隐式地执行LF,尽管这是我第一次看到。
也许有一种方法可以编辑PyDev控制台的换行设置。
编辑:或者您可以使用ANSI转义码来移动光标。像CSInD左边的n个字符或CSInC右边的n个字符。
,这是因为无论何时使用\\ r,\'print \'总是生成新行,请尝试使用sys.stdout:
import time,sys
for i in range(101):
sys.stdout.write(str(i) + \"% \\r\")
sys.stdout.flush()
time.sleep(.3)