Spyder中的Python time.sleep:如何在print语句之间暂停?

时间:2014-03-25 19:17:27

标签: python time ipython spyder

编辑:链接的帖子没有解决这个问题,这仍然是一个突出的问题。

我使用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()'在睡眠命令之前似乎没有做任何事情。

1 个答案:

答案 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控制台,以便清楚地看到文本(否则它会保持有点低以引起注意)。