2017-07-22 154 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)',它可以縮短您的代碼。 –