2014-03-25 57 views
0

編輯:鏈接的帖子沒有解決這個問題,這仍然是一個突出的問題。Spyder中的Python time.sleep:如何在打印語句之間暫停?

我在Spyder的與IPython中執行下面的程序:

import time 

print "Please enter your name." 
userName=raw_input(); 
print "Now let's wait a few seconds, {}.".format(userName) 
time.sleep(1) 
print "Did you lose your patience?" 

它提示用戶輸入他們的名字,然後(而不是打印的第一行,等待,然後,打印第二行)時,它暫停然後同時打印最後兩個打印語句的輸出。

當我從命令行運行時,它按預期工作。所以沒有人知道我能做些什麼,以便腳本在Spyder/iPython中顯示所需的行爲(我在Windows 7中工作,Spyder 2.2.5在Python 2.7中運行iPython)。

請注意,因爲我從命令行運行時得到預期的行爲,因此Why is time.sleep pausing early?的建議不是透明適用的,但可能很容易將此解決方案移植到此案例中?另外,在睡眠命令之前運行'sys.stdout.flush()'似乎沒有任何作用。

+11

在睡覺之前嘗試調用'sys.stdout.flush()'。 – vanza

+1

查看http://stackoverflow.com/questions/8031410/why-is-time-sleep-pausing-early?rq=1 – schodge

+0

@vanza沒有做任何事情。 – neuronet

回答

1

我在Spyder中測試了這個,而vanza的解決方案適用於我。你確定你把sys.stdout.flush()放在正確的位置嗎?它應該是這樣的:

vanza's solution:

import time 
import sys 

print "Please enter your name." 
userName=raw_input(); 
print "Now let's wait a few seconds, {}.".format(userName) 
sys.stdout.flush() # <- *** it goes here *** 
time.sleep(3) 
print "Did you lose your patience?" 

您可能要向下滾動IPython的輸入您輸入前安慰了一下,清楚地看到文本(否則它一直是一個有點低被察覺) 。

+0

Holy!@#。這是後一個問題:它是打印,但控制檯沒有正確滾動......所以* *表示錯誤,而不是暫停行爲中的錯誤。 – neuronet

+0

這是iPython的'修復'列表現在.... http://code.google.com/p/spyderlib/issues/detail?id = 1773 – neuronet