我有这段代码:
print(nextaction + ' ', end="")
time.sleep(2)
print(nextplayer+"'s ", end="")
time.sleep(1)
print(nextitem + '!')
time.sleep(3)
当我在shell中使用F5运行它时,它可以正常工作并暂停给定的秒数。但是当我在命令窗口中运行时,只需双击文件夹中的PGM,它只会执行第一次pauze(打印行之前),然后立即打印所有内容。
为了清楚起见,最终的行总是类似于"杀死迈克的狗!"。但我希望每个单词之间都有一个pauze。
我不知道为什么会这样。
答案 0 :(得分:2)
命令窗口有一个缓冲区,在一定数量的字符之后或在每个新行中刷新。在这里你没有足够的角色或新线来执行它,所以你需要强制它:
import sys
print(nextaction + ' ', end="")
sys.stdout.flush()
time.sleep(2)
# Also possible inline through the print function (Python 3 only)
print(nextplayer+"'s ", end="", flush=True)
time.sleep(1)
print(nextitem + '!') # Should not be useful there, since there is the \n
time.sleep(3)
答案 1 :(得分:1)
您需要刷新输出。在REPL中,输出会自动刷新以允许打印提示。
答案 2 :(得分:1)
您需要刷新输出,因为命令行不会自动为您执行此操作(除非有换行符或已将一定数量的字符写入sys.stdout
)。 print()
函数有一个可选参数,允许您指定是否刷新它。
print(nextaction, end=' ', flush=True)
time.sleep(2)
print(nextplayer, end="'s", flush=True)
time.sleep(1)
print(nextitem+'!', flush=True) # there is a newline, so no need to flush it
time.sleep(3)