আইপিথন নোটবুক কোডে পরিষ্কার সেল আউটপুট


132

আইপিথন নোটবুকটিতে আমার একটি লুপ রয়েছে যা একটি সিরিয়াল পোর্ট এবং printরিয়েল টাইমে প্রাপ্ত ডেটা শুনে ।

আমি কেবলমাত্র সর্বশেষ প্রাপ্ত ডেটা প্রদর্শনের জন্য যা অর্জন করতে চাই তা (যেমন সর্বাধিক সাম্প্রতিক ডেটা দেখায় শুধুমাত্র একটি লাইন cell সেল আউটপুট অঞ্চলে কোনও স্ক্রোলিং নয়)

আমার যা প্রয়োজন (আমার মনে হয়) তা হল পুরানো সেল আউটপুট সাফ করা যখন আমি নতুন ডেটা পাই, এবং তারপরে নতুন ডেটা মুদ্রণ করব। আমি ভাবছি কীভাবে আমি প্রোগ্রামিংয়ে পুরানো ডেটা সাফ করতে পারি?

উত্তর:


265

আপনি 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
সবচেয়ে সহজ এজ্যাক্স ইন্টারফেস!
উন্নি

60
ব্যবহার clear_output(wait=True)সাধারণত ফলাফলের সুন্দর করতে হবে যদি আপনার clear_outputএকটি লুপ ভিতরে।
টোক ফুরবি

1
মুদ্রণের ফলাফলের
কাঁপুনের

1
আমরা লুপ করছি কেন? কি দিয়ে i?
জুরিজনসিত

1
@ জোজরিজনস্মিট, কেবলমাত্র "হ্যালো ওয়ার্ল্ড!" 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

ক্লিয়ার_আউটপুট কল ব্যতীত সমস্ত প্লট পৃথকভাবে উপস্থিত হয়।


2

সেল এর উত্তরে উল্লিখিত আউটপুট সাফ করতে আপনি আইপিথন.ডিসপ্লে.ক্লিয়ার_আউটপুট ব্যবহার করতে পারেন । আমি যুক্ত করব যে আমার কাছে নোটবুকের কোনও "দুর্বলতা" ছাড়াই মুদ্রণের জন্য পরামিতিগুলির এই সংমিশ্রণটি ব্যবহার করা সবচেয়ে ভাল সমাধান ছিল:

from IPython.display import clear_output

for i in range(10):
    clear_output(wait=True)
    print(i, flush=True)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.