最近我已经选择了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")
工作得很好。
有没有办法一次打印一个字母,字母之间的间隔很短,或者根本不可能?
提前致谢!
答案 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)