我在这里写的代码(我只是假设)应该在每个字母之间用一点时间打印字母,好像有人打字:
from sys import stdout
from time import sleep
def timedPrint(string, time):
array = list(string)
for x in array:
stdout.write(x)
sleep(time)
timedPrint("test")
但由于某种原因,当我调用该函数时,它会等待每个字符打印所需的时间,然后打印整个字符串(“test”)。
有没有办法按预期打印?
答案 0 :(得分:1)
您需要的是在写完每个字符后刷新stdout
:
for x in array:
stdout.write(x)
stdout.flush() # <--
sleep(time)
答案 1 :(得分:1)
在循环中尝试sys.stdout.flush()
。
答案 2 :(得分:0)
timedPrint("test",1)
每一秒打印一次。顺便说一句,如果使用命令行
运行此代码,则没有问题python something.py
结果将是您所需要的。但是发生的事情可能是你在某个IDE或编辑器下运行它。可能会发生什么是因为你在主线程下执行sleep()函数。如果IDE也有自己的控制台渲染,则在主线程下运行的sleep()函数也可能会暂停IDE中的控制台渲染器。尝试把它放在新线程下它应该可以正常工作IDE或编辑器
答案 3 :(得分:0)
你可以这样做:
import time
def slowPrint(str, t):
for l in str:
print l,
time.sleep(t)
或者这个:
import time
from sys import stdout
def slowPrint(str, t):
for l in str:
stdout.write(l)
stdout.flush()
time.wait(t)
代码未经测试但如果使用制表符而不是4个空格则应该有效;)