Python: 在命令提示符中一个一个地打印字母

Python: Printing letters one by one in Command Prompt

最近我学习了 Python 3.4 编程,并且阅读了另一个关于如何 printing slowly (Simulate typing) 的问题,并在我的代码中使用了类似的 def。

import time

def type(str):
     for letter in str:
        print(letter, end='')
        time.sleep(0.02)
    print("\n")

type("This sentence is typed.")

在 IDLE 中一切正常,但是一旦我使用 Windows 命令提示符尝试 运行 它,CMD 会等待 IDLE 键入它所花费的时间(在这种情况下为半秒)并且然后像打印出来一样吐出来

我认为 time.sleep 声明以某种方式被破坏,尽管

print("One")
time.sleep(2)
print("Two")

工作得很好。

有什么方法可以一次打印一个字母,并且字母之间的间隔很短,还是根本不可能?

提前致谢!

尝试在每个字符后对 stdout 强制刷新。问题是 stdout 通常会被缓冲,直到输出换行符、EOF 或一定数量的字节。

import time
import sys

def type(str):
    for letter in str:
        print(letter, end='')
        sys.stdout.flush()
        time.sleep(0.02)
    print("\n")

type("This sentence is typed.")

或者,在 Python3 中,正如@PeterWood 提到的,您可以更改您的打印,使其自动刷新。

        print(letter, end='', flush=True)