在iPython笔记本中,我有一个while循环,它可以实时监听串行端口并print
收到的数据。
我想要实现的只显示最新的接收数据(即只显示最新数据的一行。单元格输出区域没有滚动)
我需要(我认为)是在接收新数据时清除旧单元格输出,然后打印新数据。我想知道如何以编程方式清除旧数据?
答案 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)