পাইথন অ্যাপ্লিকেশনগুলির সাথে কাজ করার সময় একই জায়গায় কনসোল আউটপুট লেখা ডেভেলপারদের জন্য একটি দরকারী কৌশল হতে পারে, বিশেষ করে যখন কমান্ড লাইনে ইউজার ইন্টারফেস তৈরি করা, অগ্রগতি সূচক তৈরি করা এবং রিয়েল-টাইমে কনসোল ডেটা আপডেট করা। এই নিবন্ধটি কনসোল আউটপুট ওভাররাইট করার জন্য একটি সমাধান নিয়ে আলোচনা করবে, ধাপে ধাপে কোড ব্যাখ্যা করবে এবং নির্দিষ্ট লাইব্রেরি এবং বিল্ট-ইন পাইথন ফাংশনগুলিতে ডুব দেবে যা এই কাজটিকে সম্ভব করে।
এটি অর্জনের জন্য, আমরা বিখ্যাত পাইথন লাইব্রেরি "অভিশাপ" ব্যবহার করতে পারি যা বিশেষভাবে টার্মিনাল-ভিত্তিক অ্যাপ্লিকেশন তৈরি করার জন্য ডিজাইন করা হয়েছে যা পাঠ্য-ভিত্তিক ব্যবহারকারী ইন্টারফেসের ব্যবহারের উপর নির্ভর করে। যাইহোক, সরলতা এবং বোঝার সুবিধার জন্য, আমরা পাইথনের অন্তর্নির্মিত "sys" এবং "সময়" মডিউলগুলি কনসোল আউটপুটগুলিকে ওভাররাইট করতে ব্যবহার করব।
পাইথনে কনসোল আউটপুট ওভাররাইট করা হচ্ছে
মূল ধারণাটি হলো sys.stdout.write() ফাংশনটি ব্যবহার করা, যা আমাদের একই লাইনে প্রিন্ট করার সুযোগ দেয়, এবং এর সাথে ক্যারেজ রিটার্ন ক্যারেক্টার (“r”) ব্যবহার করে লাইনের শুরুতে ফিরে আসা, যা কার্যকরভাবে আউটপুটকে ওভাররাইট করার সুযোগ করে দেয়।
পাইথন ব্যবহার করে কনসোল আউটপুট ওভাররাইট করার একটি উদাহরণ এখানে:
import time
import sys
for i in range(10):
sys.stdout.write("rStep: %d" % i)
sys.stdout.flush()
time.sleep(1)
কোডের ধাপে ধাপে ব্যাখ্যা
1. প্রথমে, প্রয়োজনীয় মডিউল আমদানি করুন:
import time import sys
ইটারেশনগুলোর মধ্যে বিলম্ব যোগ করার জন্য time মডিউলটি ব্যবহৃত হবে, এবং কনসোলে আউটপুট লেখার জন্য sys মডিউলটি ব্যবহৃত হবে ।
2. এর পরে, একটি অগ্রগতি কাউন্টার অনুকরণ করে, সংখ্যার একটি সীমার উপর পুনরাবৃত্তি করার জন্য একটি লুপ তৈরি করুন:
for i in range(10):
এই লুপটি 0 থেকে 9 পর্যন্ত পুনরাবৃত্তি করে, কার্যকরভাবে দশবার চলছে।
৩. লুপের ভিতরে, sys.stdout.write() ফাংশন ব্যবহার করে বর্তমান পুনরাবৃত্তি নম্বরটি একটি লেবেলসহ প্রিন্ট করুন:
sys.stdout.write("rStep: %d" % i)
"r" অক্ষর হল ক্যারেজ রিটার্ন যা লাইনের শুরুতে রিসেট হিসাবে কাজ করে, পরবর্তী আউটপুটটিকে বর্তমানটিকে ওভাররাইট করার অনুমতি দেয়।
৪. কনসোলে লেখার পর sys.stdout.flush() ব্যবহার নিশ্চিত করুন:
sys.stdout.flush()
flush() ফাংশন অভ্যন্তরীণ বাফার পরিষ্কার করে এবং নিশ্চিত করে যে আউটপুট অবিলম্বে প্রদর্শিত হবে।
৫. সবশেষে, time.sleep() ফাংশন ব্যবহার করে একটি ডিলে যোগ করুন:
time.sleep(1)
এই বিরতিটি এক সেকেন্ডের জন্য স্থায়ী হবে, আউটপুটটি ওভাররাইট করা পর্যবেক্ষণ করা সহজ করে তোলে।
এখন আপনি দেখতে পাচ্ছেন কিভাবে কনসোল আউটপুট প্রতিটি পুনরাবৃত্তিতে ওভাররাইট করা হচ্ছে।
"sys" লাইব্রেরির ওভারভিউ
sys লাইব্রেরি হলো একটি শক্তিশালী বিল্ট-ইন পাইথন মডিউল যা ইন্টারপ্রেটারের অভ্যন্তরীণ বিষয়াবলী এবং বিভিন্ন সিস্টেম-নির্দিষ্ট প্যারামিটার অ্যাক্সেস করার সুযোগ দেয়। এই আর্টিকেলে, আমরা কনসোল আউটপুট ওভাররাইট করার জন্য sys.stdout.write() এবং sys.stdout.flush() ফাংশন ব্যবহারের উপর মনোযোগ দিয়েছি । তবে , “ sys” লাইব্রেরি আরও অনেক কার্যকারিতা প্রদান করে, যেমন কমান্ড লাইন আর্গুমেন্ট, বাইটঅর্ডার, এক্সেপশন এবং প্রি-ডিফাইন্ড পাথ।
"সময়" লাইব্রেরির ওভারভিউ
` time` লাইব্রেরি হলো পাইথনের আরেকটি বিল্ট-ইন মডিউল, যা সময় সংক্রান্ত বিভিন্ন ফাংশন সরবরাহ করে। আমাদের উদাহরণে, আমরা ইটারেশনগুলোর মধ্যে একটি বিলম্ব তৈরি করতে ` time.sleep()` ফাংশনটি ব্যবহার করেছি। `time` লাইব্রেরিটি এক্সিকিউশন টাইম পরিমাপ করা, বিভিন্ন টাইম ফরম্যাটের মধ্যে রূপান্তর করা এবং বর্তমান সময় জানার জন্য অন্যান্য টুলও সরবরাহ করে। পাইথন অ্যাপ্লিকেশনে সময়-সম্পর্কিত ফাংশন নিয়ে কাজ করা বা টাস্ক শিডিউল করা ডেভেলপারদের জন্য এই মডিউলটি অপরিহার্য।