在iPython笔记本中,我有一个while循环,它侦听串行端口并实时打印接收到的数据。
我想要实现的是只显示最新接收到的数据(即只有一行显示最新的数据。单元格输出区没有滚动)
我需要(我认为)的是,当我收到新数据时,清除旧的单元格输出,然后打印新数据。我想知道如何以编程方式清除旧数据?
在iPython笔记本中,我有一个while循环,它侦听串行端口并实时打印接收到的数据。
我想要实现的是只显示最新接收到的数据(即只有一行显示最新的数据。单元格输出区没有滚动)
我需要(我认为)的是,当我收到新数据时,清除旧的单元格输出,然后打印新数据。我想知道如何以编程方式清除旧数据?
你可以使用IPython.display。Clear_output清除单元格的输出。
from IPython.display import clear_output
for i in range(10):
clear_output(wait=True)
print("Hello World!")
在循环结束时,你只会看到一个Hello World!
如果没有代码示例,就不容易给出工作代码。缓冲最近的n个事件可能是一个不错的策略。当缓冲区发生变化时,您可以清除单元格的输出并再次打印缓冲区。
如果你来到这里,像我一样,想在Jupyter的Julia笔记本上做同样的事情,使用plot,你可以使用:
IJulia.clear_output(true)
对于一个多次运行的动画情节
if nrun==1
display(plot(x,y)) # first plot
else
IJulia.clear_output(true) # clear the window (as above)
display(plot!(x,y)) # plot! overlays the plot
end
如果没有clear_output调用,所有的图将单独显示。
你可以使用IPython.display。Clear_output清除cel回答中提到的输出。我想补充说,对我来说,最好的解决方案是使用这些参数的组合来打印笔记本,而不会有任何“抖动”:
from IPython.display import clear_output
for i in range(10):
clear_output(wait=True)
print(i, flush=True)
使用这段简单的代码,您可以更好地可视化clear_output(wait=True)函数。
from IPython.display import clear_output
import time
for i in range(10):
clear_output(wait=True)
print(i)
time.sleep(1)
如果我没有错,你的意思是你只需要清除单元格的输出部分,这可能是一个有效的输出或一些错误,你不需要再看了。如果是的!只要转到顶部功能区,选择单元格>当前输出>清除
简单, 如果你想清除当前单元格的输出,只需要在该单元格的末尾使用这个
from IPython.display import clear_output
clear_output(wait=False)