Вывод ячеек ячеек ipython в коде
В ноутбуке iPython у меня есть цикл while, который слушает последовательный порт и print
полученные данные в реальном времени.
Что я хочу достичь, чтобы показывать только последние полученные данные (т.е. только одна строка, показывающая самые последние данные, без прокрутки в области вывода ячеек)
Мне нужно (я думаю), чтобы очистить вывод старой ячейки, когда я получаю новые данные, а затем печатает новые данные. Мне интересно, как я могу очистить старые данные программным путем?
Ответы
Ответ 1
Вы можете использовать IPython.display.clear_output
, чтобы очистить вывод ячейки.
from IPython.display import clear_output
for i in range(10):
clear_output()
print("Hello World!")
В конце этого цикла вы увидите только один Hello World!
.
Без примера кода вам нелегко дать вам рабочий код. Вероятно, буферизация последних n событий - хорошая стратегия. Всякий раз, когда изменяется буфер, вы можете очистить выход ячейки и снова распечатать буфер.
Ответ 2
И в случае, если вы придете сюда, как я, желая сделать то же самое для графиков в записной книжке Julia в Jupyter, используя Plots, вы можете использовать:
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 все графики отображаются отдельно.
Ответ 3
Вы можете использовать IPython.display.clear_output, чтобы очистить вывод, как указано в ответе cel. Я бы добавил, что для меня лучшим решением было бы использовать эту комбинацию параметров для печати без каких-либо "дрожаний" ноутбука:
from IPython.display import clear_output
for i in range(10):
clear_output(wait=True)
print(i, flush=True)