ipython笔记本清除代码中的单元格输出

时间:2014-07-18 02:02:57

标签: python ipython ipython-notebook

在iPython笔记本中,我有一个while循环,它可以实时监听串行端口并print收到的数据。

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

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

5 个答案:

答案 0 :(得分:192)

您可以使用IPython.display.clear_output清除单元格的输出。

from IPython.display import clear_output

for i in range(10):
    clear_output()
    print("Hello World!")

在此循环结束时,您只会看到一个Hello World!

如果没有代码示例,那么为您提供代码并不容易。可能缓冲最新的n个事件是一个很好的策略。每当缓冲区改变时,您可以清除单元格的输出并再次打印缓冲区。

答案 1 :(得分:1)

您可以使用IPython.display.clear_output清除cel的答案中提到的输出。我要补充一点,对我来说,最好的解决方案是使用这种参数组合进行打印,而不会造成笔记本的任何“晃动”:

from IPython.display import clear_output

for i in range(10):
    clear_output(wait=True)
    print(i, flush=True)

答案 2 :(得分:1)

如果我没有错,你的意思是你只需要清除一个单元格的输出部分,这可能是一个有效的输出或一些你不再看的错误。如果是!只需转到顶部功能区并选择单元格>当前输出>清除

答案 3 :(得分:0)

如果您像我一样来到这里,希望使用Jupitter在Jupyter的Julia笔记本中对地块做同样的事情,则可以使用:

    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调用,所有图将单独显示。

答案 4 :(得分:0)

您可以使用这个简单的代码更好地可视化函数 clear_output(wait=True)

from IPython.display import clear_output
import time 

for i in tqdm(range(10)):
    clear_output(wait=True)
    print(i)
    time.sleep(1)