【问题标题】:ipython notebook clear cell output in code代码中的ipython笔记本清除单元格输出
【发布时间】:2014-09-09 01:46:57
【问题描述】:

在 iPython 笔记本中,我有一个 while 循环,用于侦听串行端口和 print 实时接收的数据。

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

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

【问题讨论】:

    标签: python ipython ipython-notebook


    【解决方案1】:

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

    【讨论】:

    • 这应该适用于交互式清除单元格,但 OP 要求以编程方式执行此操作。
    【解决方案2】:

    您可以通过这个简单的代码更好地可视化函数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)
    

    【讨论】:

      【解决方案3】:

      您可以使用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 个事件是一个很好的策略。每当缓冲区发生变化时,您都可以清除单元格的输出并再次打印缓冲区。

      【讨论】:

      • 有史以来最简单的 ajax 界面!
      • 如果循环中有clear_output,使用clear_output(wait=True) 通常会使结果更好。
      • 打印结果抖动后的一半屏幕,但由于wait=True而抖动较少
      • 但这会清除所有输出。有没有办法只清除最近的数字?编辑:这就是我要找的东西:github.com/jupyter-widgets/ipywidgets/issues/…
      • @jorijnsmit,只是为了说明“Hello World!”不是打印 10 次,而是仅打印 1 次。 i 并不重要。
      【解决方案4】:

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

      from IPython.display import clear_output
      
      for i in range(10):
          clear_output(wait=True)
          print(i, flush=True)
      

      【讨论】:

        【解决方案5】:

        如果你像我一样来到这里,希望在 Jupyter 的 Julia 笔记本中对绘图做同样的事情,使用 Plots,你可以使用:

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

        【讨论】:

          猜你喜欢
          • 2013-11-22
          • 1970-01-01
          • 1970-01-01
          • 2015-03-15
          • 2016-02-04
          • 2017-02-16
          • 1970-01-01
          • 2016-06-16
          • 1970-01-01
          相关资源
          最近更新 更多