1

我正在尝试将一个字符串逐个字母(每次打印之间有一个暂停)打印到终端屏幕上,我希望它都在同一行。

我目前有这个:

sleepMode = "SLEEP MODE..."
activ = "ACTIVATE!"
for l in sleepMode:
    print(l, end=" ")
    sleep(0.1)
sleep(2) 
for l in activ:
    print(l, end=" ")
    sleep(0.1)

由于某种原因,这不会在循环中的打印之间休眠,而是似乎要等到循环完成后再一次打印所有内容。

我希望它看起来像是在屏幕上实时“输入”的。

有什么建议么?

谢谢!扎克

4

2 回答 2

3

尝试冲洗它

for l in activ:
    print(l, end=" ")
    sys.__stdout__.flush()
    sleep(0.1)

不知道它是否会起作用,因为我假设您使用的是 py3x 并且它在我的系统中可以正常工作,无论是否有刷新

刷新只是强制输出缓冲区写入屏幕......通常它会等到它有一些空闲时间将其转储到屏幕上。但睡眠锁定了它。因此,通过刷新它,您现在将内容强制显示在屏幕上,而不是让内部调度程序执行它......至少我是这么理解的。我可能错过了一些细微差别

于 2013-07-02T19:11:20.220 回答
0

以下作品:

import time
import sys
sleepMode = "SLEEP MODE..."
activ = "ACTIVATE!"
for l in sleepMode:
    sys.stdout.write(l);
    time.sleep(0.1)
time.sleep(2) 
print
for l in activ:
    sys.stdout.write(l);
    time.sleep(0.1)
于 2013-07-02T19:16:01.997 回答