【发布时间】:2015-01-26 00:12:18
【问题描述】:
我想打印一个输出'temporary',其实是这样的;
In[1]: print ("Hello")
Out[1]: Hello #Out[1]
#after 2 seconds for example
Out[1]: Hi #Still Out[1]
有没有办法做到这一点?这就像一个句子显示 2 秒后,在 same 位置,显示另一个字符串。我们可以删除最后一个输出并在同一行打印其他内容吗?
【问题讨论】:
我想打印一个输出'temporary',其实是这样的;
In[1]: print ("Hello")
Out[1]: Hello #Out[1]
#after 2 seconds for example
Out[1]: Hi #Still Out[1]
有没有办法做到这一点?这就像一个句子显示 2 秒后,在 same 位置,显示另一个字符串。我们可以删除最后一个输出并在同一行打印其他内容吗?
【问题讨论】:
我不确定我们是否可以返回并“取消打印”我们已经打印的内容,但就像在现实世界的打字机上一样,我们可以使用carriage return,将“打印机”重置为行并重新打印其他内容。
这段代码演示了它是如何工作的(对于这个演示来说,这是一个糟糕的无限循环)。注意 %d 之后的 '\r',
i = 0
while time.sleep(0.2) == None:
sys.stdout.write("Counter: %d\r" %i)
sys.stdout.flush()
i += 1
【讨论】:
un-print 吗?
使用time.sleep() 模块 .这个简单的代码可以在 python 控制台上运行,但不是 Ipython 控制台和 Ipython Notebook。
def hello():
print 'Hello',
time.sleep(2)
print '\rHi'
hello()
这适用于 Ipython Notebook,但不适用于 Ipython Console
from IPython.display import clear_output
def hello():
print 'Hello'
sys.stdout.flush()
time.sleep(2)
clear_output()
print 'Hi'
sys.stdout.flush()
hello()
【讨论】:
Out[1]。请仔细阅读
use sleep()。您必须仔细阅读问题。