编辑:链接的帖子没有解决这个问题,这仍然是一个突出的问题。
我使用iPython在Spyder中执行以下程序:
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()'在睡眠命令之前似乎没有做任何事情。
答案 0 :(得分:2)
我在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控制台,以便清楚地看到文本(否则它会保持有点低以引起注意)。