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

新手上路,请多包涵

在 iPython notebook 中,我有一个 while 循环监听串行端口和 print 实时接收的数据。

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

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

原文由 aha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 364
2 个回答

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

原文由 cel 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 from IPython.display import clear_output

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

原文由 hof.and.or 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题