2017-07-22 31 views
0

我在我的Mac上遇到终端问题。 我试图在联机编译器上测试时打印出延迟文本(如它出现在打字机上)并且代码(如下)是正确的。无法在Mac终端上运行时间延迟文本(Python)

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。我在网上查了一下,我觉得我的终端是为了方便而剪切缓冲区,但现在我实际上需要缓冲区(我将要打印出延迟文本很多)。是否有任何声明在我的终端上打开缓冲区(或修复它,因为它应该被默认设置)?非常感谢

回答

1

你需要每个sys.stdout.write()后加入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() 
+0

我必须这么做*我想打印的东西每一次?在提醒终端程序之前是否有一个声明要放入,以避免缓冲?谢谢你的帮助btw –

+0

我不认为你可以关闭缓冲,所以你的问题的答案是_yes_:你必须每次都这样做。但是,您可以定义一个函数'write_typewriter(text,delay)',它可以缩短您的代码。 –