问题:iPython Notebook清除代码中的单元格输出
在iPython笔记本中,我有一个while循环,可print
实时侦听串行端口和接收到的数据。
我想要实现的仅显示最新接收到的数据(即,仅一行显示最新数据。在单元格输出区域中不滚动)
我需要的是(我认为)当我收到新数据时清除旧的单元格输出,然后打印新数据。我想知道如何以编程方式清除旧数据?
回答 0
您可以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个事件是一个好策略。每当缓冲区更改时,您都可以清除单元格的输出并再次打印缓冲区。
回答 1
如果您像我一样来到这里,希望使用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调用,所有图将单独显示。
回答 2
您可以使用IPython.display.clear_output清除输出,如cel的答案所述。我要补充一点,对我而言,最好的解决方案是使用以下参数组合进行打印,而不会出现笔记本的“晃动”:
from IPython.display import clear_output
for i in range(10):
clear_output(wait=True)
print(i, flush=True)