कोड में ipython नोटबुक क्लियर सेल आउटपुट


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वास्तव में कोई फर्क नहीं पड़ता।
cel

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

Cel के उत्तर में दिए गए आउटपुट को क्लियर करने के लिए आप IPython.display.clear_output का उपयोग कर सकते हैं । मुझे लगता है कि मेरे लिए सबसे अच्छा समाधान था कि नोटबुक के किसी भी "शेकनेस" के बिना मुद्रित करने के लिए मापदंडों के इस संयोजन का उपयोग करें:

from IPython.display import clear_output

for i in range(10):
    clear_output(wait=True)
    print(i, flush=True)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.