ipython notebook 清除单元输出的代码

238 投票
6 回答
378554 浏览
提问于 2025-04-18 13:47

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

我想要实现的目标是只显示最新接收到的数据,也就是说,只想在输出区域显示一行最新的数据,不想让输出区域出现滚动条。

我觉得我需要在接收到新数据时清除旧的输出,然后再打印新的数据。我想知道怎么才能通过编程的方式清除旧的数据呢?

6 个回答

5

简单,如果你只想清除当前单元格的输出,只需在该单元格的末尾使用这个代码

from IPython.display import clear_output
clear_output(wait=False)
5

如果我没理解错的话,你的意思是你只想清除一个单元格的输出部分,这可能是有效的输出结果,也可能是一些你不想再看的错误信息。如果是这样的话!只需去顶部的菜单栏,选择 单元格 > 当前输出 > 清除 就可以了。

8

你可以通过这段简单的代码更好地理解函数 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)
13

你可以使用 IPython.display.clear_output 来清除输出,就像cel的回答中提到的那样。我想补充一下,对我来说,最好的解决方案是使用这组参数来打印,这样可以避免笔记本出现任何“抖动”。

from IPython.display import clear_output

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

你可以使用 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 个事件是个不错的策略。每当这个保存的内容发生变化时,你可以清除单元格的输出,然后再打印保存的内容。

撰写回答