aha*_*aha 102 python ipython ipython-notebook
在iPython笔记本中,我有一个while循环,它print实时监听串行端口和接收的数据.
我想要实现的只显示最新的接收数据(即只显示最新数据的一行.单元格输出区域没有滚动)
我需要(我认为)是在接收新数据时清除旧单元格输出,然后打印新数据.我想知道如何以编程方式清除旧数据?
cel*_*cel 222
您可以使用IPython.display.clear_output清除单元格的输出.
from IPython.display import clear_output
for i in range(10):
clear_output()
print("Hello World!")
Run Code Online (Sandbox Code Playgroud)
在这个循环结束时,你只会看到一个Hello World!.
没有代码示例,给你工作代码并不容易.可能缓冲最新的n个事件是一个很好的策略.每当缓冲区更改时,您可以清除单元格的输出并再次打印缓冲区.
小智 7
您可以使用IPython.display.clear_output清除 cel 回答中提到的输出。我想补充一点,对我来说,最好的解决方案是使用这种参数组合进行打印,而不会出现笔记本的任何“抖动”:
from IPython.display import clear_output
for i in range(10):
clear_output(wait=True)
print(i, flush=True)
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用这个简单的代码更好地可视化该函数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)
Run Code Online (Sandbox Code Playgroud)
小智 5
如果我没记错的话,您的意思是您只需要清除单元格的输出部分,这可能是有效的输出或一些您不再需要查看的错误。如果是!只需转到顶部功能区并选择单元格 > 当前输出 > 清除
简单,如果您只想清除当前单元格的输出,只需在该单元格的末尾使用它
from IPython.display import clear_output
clear_output(wait=False)
Run Code Online (Sandbox Code Playgroud)