Can';在Mac终端上运行时间延迟文本(Python)

Can';在Mac终端上运行时间延迟文本(Python),python,text,delay,typewriter,Python,Text,Delay,Typewriter,我的Mac上的终端有问题。 我正在尝试打印延迟文本(就像它出现在打字机上一样),当我在在线编译器上测试时,代码(如下)是正确的 import sys import time intro1= "Welcome player. What's your name?" for x in intro1: sys.stdout.write(x) time.sleep(0.2) 但我的Mac终端只是冻结了一秒钟,然后一次就把整个报表打印出来。我在Mac上安装了Python 2.7.10

我的Mac上的终端有问题。 我正在尝试打印延迟文本(就像它出现在打字机上一样),当我在在线编译器上测试时,代码(如下)是正确的

import sys
import time


intro1= "Welcome player. What's your name?"

for x in intro1:
    sys.stdout.write(x)
    time.sleep(0.2)

但我的Mac终端只是冻结了一秒钟,然后一次就把整个报表打印出来。我在Mac上安装了Python 2.7.10。我在网上查了一下,我想我的终端为了方便起见正在削减缓冲区,但现在我实际上需要缓冲区(我将大量打印延迟的文本)。在我的终端上是否有任何语句来打开缓冲区(或者修复它,因为它应该默认设置)?非常感谢

您需要在每个
sys.stdout.flush()之后添加
sys.stdout.flush()
,以强制输出字符,而不是让其得到缓冲:

import sys
import time

introduction = "Welcome player.  What's your name? "

for character in introduction:
    sys.stdout.write(character)
    sys.stdout.flush()
    time.sleep(0.2)

name = raw_input()

每次我想打印东西时都必须这样做吗?在程序前是否有一条语句来提醒终端不能缓冲?感谢您的帮助。btwI不认为您可以关闭缓冲,因此您的问题的答案是肯定的:您每次都必须这样做。但是,您可以定义一个函数
write\u typewriter(text,delay)
,使代码保持简短。