Ipython笔记本清除单元格输出代码

在一个iPython笔记本,我有一个while循环,监听串口和print接收到的数据实时。

我想要实现的是只显示最新接收到的数据(即只有一行显示最新的数据。单元格输出区没有滚动)

我需要(我认为)的是,当我收到新数据时,清除旧的单元格输出,然后打印新数据。我想知道如何以编程方式清除旧数据?

299943 次浏览

你可以使用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)

如果我没有错,你的意思是你只需要清除单元格的输出部分,这可能是一个有效的输出或一些错误,你不需要再看了。如果是的!只要转到顶部色带并选择细胞在电流输出及gt;清晰的

< p > 简单的, 如果你想清除当前单元格的输出,只需要在该单元格

的末尾使用这个
from IPython.display import clear_output
clear_output(wait=False)