ipython notebook чіткий вихід клітинки в код


132

У ноутбуці iPython у мене є цикл часу, який слухає послідовний порт і printотримані дані в режимі реального часу.

Чого я хочу досягти, щоб показати лише останні отримані дані (тобто лише один рядок із останніми даними. Відсутність прокрутки в області виводу комірок)

Що мені потрібно (я думаю) - це очистити старий вихід клітинки, коли я отримую нові дані, а потім друкує нові дані. Мені цікаво, як я можу програмно очистити старі дані?

Відповіді:


266

Ви можете використовувати IPython.display.clear_outputдля очищення виводу комірки.

from IPython.display import clear_output

for i in range(10):
    clear_output(wait=True)
    print("Hello World!")

В кінці цього циклу ви побачите лише один Hello World!.

Без прикладу коду надати вам робочий код непросто. Можливо, буферизація останніх російських подій є хорошою стратегією. Щоразу, коли буфер змінюється, ви можете очистити висновок комірки та знову надрукувати буфер.


1
Найпростіший інтерфейс ajax коли-небудь!
Унні

60
Використання clear_output(wait=True)волі, як правило, зробить результат приємнішим, якщо у вас clear_outputвсередині циклу.
Токе Фаурбі

1
половина екрана після результату друку тремтить, але менше струшується завдяки очікуванню = Правда
B.Mr.W.

1
Чому ми лупимо? Що з i?
jorijnsmit

1
@jorijnsmit, просто щоб проілюструвати те, що "Привіт, світ!" друкується не 10 разів, а лише 1 раз. iнасправді не має значення.
чола

2

І якщо ви приїдете сюди, як я, шукаючи зробити те саме для сюжетів у зошиті Юлії в Юпітері, використовуючи «Сюжети», ви можете використовувати:

    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, щоб очистити вихід, як зазначено у відповіді чела . Я додам, що для мене найкращим рішенням було використання цієї комбінації параметрів для друку без будь-якої «хиткості» ноутбука:

from IPython.display import clear_output

for i in range(10):
    clear_output(wait=True)
    print(i, flush=True)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.