sys.stdout.write 和 \r 回车不工作

3 投票
2 回答
9795 浏览
提问于 2025-04-17 20:22

我在看一个小教程,经过很多研究,我还是搞不明白为什么给出的代码不在同一行打印出来。我是直接复制的,所以应该可以正常工作。

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()

撰写回答