【问题标题】:Python time.sleep in Spyder: how to pause between print statements?Spyder中的Python time.sleep:如何在打印语句之间暂停?
【发布时间】:2014-05-03 20:50:41
【问题描述】:

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

我使用 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? 的建议并不透明地适用,但也许很容易将该解决方案移植到这种情况下?此外,在 sleep 命令之前运行 'sys.stdout.flush()' 似乎没有任何作用。

【问题讨论】:

  • 睡前尝试拨打sys.stdout.flush()
  • @vanza 什么都没做。
  • 不相关:raw_input 接受 prompt 属性。用它代替printuserName = raw_input("Please enter your name.\n")
  • @neuronet:首先,让它从命令行运行,以确保您的代码是正确的。那你可以试试ipythonspyder,看看会不会坏事

标签: python time ipython spyder


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

【讨论】:

  • 神圣!@#。这是后一个问题:它正在打印,但控制台没有正确滚动......所以 是错误,而不是暂停行为中的错误。
  • 这在 iPython 的“修复”列表中......code.google.com/p/spyderlib/issues/detail?id=1773
猜你喜欢
  • 1970-01-01
  • 2020-10-24
  • 2022-07-04
  • 2015-07-28
  • 2022-11-17
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多