Python time.sleep在Spyder中:如何在打印语句间暂停?
编辑:链接的帖子并没有解决这个问题,这仍然是一个悬而未决的问题。
我在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)。
注意,因为我在命令行运行时得到了预期的效果,所以在为什么time.sleep提前暂停?中的建议并不完全适用,但也许可以很容易地将那个解决方案移植到这个情况?另外,在sleep命令之前运行'sys.stdout.flush()'似乎也没有任何效果。
1 个回答
2
我在Spyder里测试了,vanza的解决方案对我有效。你确定你把sys.stdout.flush()放在正确的地方了吗?应该像这样:
vanza的解决方案:
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控制台,这样才能清楚地看到文本(否则文本会比较低,不容易注意到)。