webentwicklung-frage-antwort-db.com.de

ipython notebook löscht die Zellenausgabe im Code

In einem iPython-Notizbuch habe ich eine while-Schleife, die einen seriellen Port abhört und print die empfangenen Daten in Echtzeit.

Was ich erreichen möchte, um nur die zuletzt empfangenen Daten anzuzeigen (d. H. Nur eine Zeile mit den neuesten Daten. Kein Scrollen im Zellenausgabebereich)

Ich denke, ich muss die alte Zellenausgabe löschen, wenn ich neue Daten erhalte, und dann die neuen Daten drucken. Ich frage mich, wie ich alte Daten programmgesteuert löschen kann.

98
aha

Sie können IPython.display.clear_output um die Ausgabe einer Zelle zu löschen.

from IPython.display import clear_output

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

Am Ende dieser Schleife sehen Sie nur einen Hello World!.

Ohne ein Codebeispiel ist es nicht einfach, Ihnen Arbeitscode zu geben. Wahrscheinlich ist das Puffern der letzten n Ereignisse eine gute Strategie. Immer wenn sich der Puffer ändert, können Sie die Ausgabe der Zelle löschen und den Puffer erneut drucken.

212
cel

Und falls Sie hierher kommen, wie ich es getan habe, um das Gleiche für Handlungen in einem Julia-Notizbuch in Jupyter zu tun, können Sie Plots verwenden:

    IJulia.clear_output(true)

also für eine art animiertes plot mit mehreren läufen

    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

Ohne den Aufruf von clear_output werden alle Diagramme separat angezeigt.

0
marzetti