ipython notebook kodda hücre çıktısını temizle


133

Bir iPython dizüstü bilgisayarda, Seri bağlantı noktasını dinleyen bir while döngüm var ve print alınan verileri gerçek zamanlı olarak .

Yalnızca en son alınan verileri göstermek için elde etmek istediğim şey (yani, en son verileri gösteren yalnızca bir satır. Hücre çıktı alanında kaydırma yok)

İhtiyacım olan şey (sanırım) yeni veri aldığımda eski hücre çıktısını temizlemek ve ardından yeni verileri yazdırmak. Eski verileri programlı olarak nasıl temizleyebilirim merak ediyorum?

Yanıtlar:


267

IPython.display.clear_outputBir hücrenin çıktısını temizlemek için kullanabilirsiniz .

from IPython.display import clear_output

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

Bu döngünün sonunda sadece bir tane göreceksiniz Hello World!.

Bir kod örneği olmadan size çalışma kodu vermek kolay değildir. Muhtemelen en son n olayı tamponlamak iyi bir stratejidir. Arabellek değiştiğinde, hücrenin çıktısını temizleyebilir ve arabelleği yeniden yazdırabilirsiniz.


1
Şimdiye kadarki en basit ajax arayüzü!
Unni

60
Kullanılması clear_output(wait=True)varsa genellikle sonuç daha güzel hale getirecek clear_outputbir döngü içinde.
Faurby'yi Toke

1
Baskı sonucu sallandıktan sonra ekranın yarısı
titrer

1
Neden döngü yapıyoruz? Ne var i?
jorijnsmit

2
@jorijnsmit, "Merhaba Dünya!" 10 kez değil, sadece 1 kez yazdırılır. igerçekten önemli değil.
cel

2

Ve buraya geldiğinizde, benim yaptığım gibi, Jupyter'deki bir Julia defterinde arsalar için aynı şeyi yapmak istiyorsanız, Plots'u kullanarak şunları kullanabilirsiniz:

    IJulia.clear_output(true)

bu nedenle, birden çok çalıştırmanın bir tür animasyonlu grafiği için

    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 çağrısı olmadan, tüm grafikler ayrı ayrı görünür.


2

Çıktıyı cel's yanıtında belirtildiği gibi temizlemek için IPython.display.clear_output'u kullanabilirsiniz . Benim için en iyi çözümün, dizüstü bilgisayarda herhangi bir "titreme" olmadan yazdırmak için bu parametre kombinasyonunu kullanmak olduğunu eklemek isterim:

from IPython.display import clear_output

for i in range(10):
    clear_output(wait=True)
    print(i, flush=True)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.