为什么在`time.sleep`调用之间,使用`print`打印的输出不能在同一行上显示?

5

我希望你能帮我翻译一下Python相关的内容。以下是我的代码:

import time

def printChat(string, sleepTime):
    for a in string:
        print (a, end="")
        time.sleep(sleepTime)
    print()

当我执行printChat("Hello", 0.1)命令时,它应该打印一个字母,等待0.1秒,然后再打印下一个字母,但实际上它会等待0.5秒(因为“hello”有5个字符),然后突然打印出全部内容。你知道为什么会这样吗?

你需要刷新。 - Joe Iddon
2
可能是如何刷新Python print的输出?的重复问题。 - Joe Iddon
1个回答

6

您应该使用:

        print (a, end="", flush=True)

因为控制台输出是按行缓冲的。


你能提供一个证明控制台输出是缓冲的声明来源吗?无论是输出到控制台还是文件,stdout都是一个缓冲流,不是吗? - phihag
如果是文件,那么 '\n' 不会刷新缓冲区。只有控制台是行缓冲的。 - llllllllll
谢谢,现在它运行良好。我会尽快接受答案。 - WhoKnows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接