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

时间:2015-02-16 19:45:15

标签: python string python-3.x printing cmd

最近我已经选择了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")

工作得很好。

有没有办法一次打印一个字母,字母之间的间隔很短,或者根本不可能?

提前致谢!

1 个答案:

答案 0 :(得分:2)

尝试在每个角色后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)