sys.stdout.write 和 \r 回车不工作
我在看一个小教程,经过很多研究,我还是搞不明白为什么给出的代码不在同一行打印出来。我是直接复制的,所以应该可以正常工作。
import time
import sys
sys.stdout.write('29 seconds remaining')
time.sleep(1)
sys.stdout.write('\r28 seconds remaining')
输出是:
29 seconds remaining
28 seconds remaining
最终输出应该是:
28 seconds remaining
2 个回答
0
在尝试了一些对其他人有效的解决方案后,我不得不通过自己的经历发现,换行符是由输出字符串的命令行解释的(如果我说的不准确,请纠正我)。当我意识到Windows命令提示符(C:\Windows\System32\cmd.exe)实际上正确地解释了换行符时,我离解决方案越来越近,但PyScripter这个开发环境却没有这样做。后来我明白,PyScripter的开发者知道这个问题,但他们不想花时间去模仿cmd.exe的行为。
希望这能给其他开发者指明方向,节省一些时间。
2
我把"\r"放在了行的末尾,而不是放在开头。像这样:
sys.stdout.write("%s[%s%s] %2i/%i\r" % (variables go here))
sys.stdout.flush()