@ লেনোহ আমার জিজ্ঞাসা সন্তুষ্ট 'পাইথন দমন নিউলাইন' অনুসন্ধান করার সময় আমি এই নিবন্ধটি আবিষ্কার করেছি। আমি পিএসটিটির জন্য পাইথন ৩.২ বিকাশের জন্য রাস্পবেরি পাইতে আইডিএল 3 ব্যবহার করছি। আমি পিটিটিওয়াই কমান্ড লাইনে একটি অগ্রগতি বার তৈরি করতে চেয়েছিলাম। আমি পৃষ্ঠাটি স্ক্রোলিং দূরে চাইনি। আমি একটি অনুভূমিক রেখা চেয়েছিলাম যাতে প্রোগ্রামটি বন্ধ হয়ে যায়নি বা আনন্দিত অসীম লুপের মধ্যাহ্নভোজনে প্রেরণ করা হয়নি - "আমাকে ছেড়ে দিন, আমি ঠিক করছি," তবে এতে কিছুটা সময় লাগতে পারে '' ইন্টারেক্টিভ বার্তা - পাঠ্যের অগ্রগতি বারের মতো।
print('Skimming for', search_string, '\b! .001', end='')
পরবর্তী পর্দায়-রাইট, যা ⌫⌫⌫ rubout তিন backspaces প্রিন্ট হবে এবং তারপর একটি নির্দিষ্ট সময়ের জন্য প্রস্তুতি, বন্ধ সম্মার্জনী '২001' এবং সময়সীমার লাইন ব্যাপ্ত দ্বারা বার্তা সূচনা। search_string
তোতা ব্যবহারকারীর ইনপুট পরে \b!
, আমার search_string
পাঠ্যের বিস্ময় বিন্দু ট্রিমস করে স্থানটির পিছনে ফিরে যা print()
অন্যথায় বাধ্যতামূলকভাবে, বিরামচিহ্নগুলি যথাযথভাবে স্থাপন করে। এটির পরে একটি স্থান এবং 'প্রগতি বার'-এর প্রথম' ডট 'যা আমি অনুকরণ করছি by অপ্রয়োজনীয়ভাবে, বার্তাটি পৃষ্ঠার নম্বরটিও দিয়েছিল (অগ্রণী শূন্যগুলি সহ তিনটি দৈর্ঘ্যে ফর্ম্যাট করা হয়) ব্যবহারকারীর কাছ থেকে অগ্রগতিটি প্রক্রিয়াধীন হওয়ার বিজ্ঞপ্তি নিতে এবং যা পরবর্তীকালে আমরা কীভাবে তৈরি করব সেই সময়ের গণনাও প্রতিফলিত করবে ঠিক আছে।
import sys
page=1
search_string=input('Search for?',)
print('Skimming for', search_string, '\b! .001', end='')
sys.stdout.flush() # the print function with an end='' won't print unless forced
while page:
# some stuff…
# search, scrub, and build bulk output list[], count items,
# set done flag True
page=page+1 #done flag set in 'some_stuff'
sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat
sys.stdout.flush()
if done: #( flag alternative to break, exit or quit)
print('\nSorting', item_count, 'items')
page=0 # exits the 'while page' loop
list.sort()
for item_count in range(0, items)
print(list[item_count])
#print footers here
if not (len(list)==items):
print('#error_handler')
অগ্রগতি বার মাংস sys.stdout.write('\b\b\b.'+format(page, '03'))
লাইনে আছে। প্রথমে, বামদিকে মুছতে, এটি তিনটি সংখ্যার অক্ষরের উপরে কার্সারটিকে 'out b \ b with b' হিসাবে ⌫⌫⌫ রুবআউট হিসাবে ব্যাক আপ করে এবং অগ্রগতির বারের দৈর্ঘ্যে যোগ করার জন্য একটি নতুন সময়কে ড্রপ করে। তারপরে এটি পৃষ্ঠার তিনটি সংখ্যা লিখেছে যা এখনও অবধি এগিয়েছে। sys.stdout.write()
একটি পূর্ণ বাফার বা আউটপুট চ্যানেলটি বন্ধ হওয়ার জন্য অপেক্ষা করার কারণে sys.stdout.flush()
তাৎক্ষণিক লেখার জন্য বাধ্য করে। বাইপাস করা হয় যা sys.stdout.flush()
শেষে নির্মিত হয় । তারপরে কোডটি তার জাগতিক সময়ের নিবিড় ক্রিয়াকলাপগুলির মধ্য দিয়ে যায় যখন এটি তিনটি অঙ্ক মুছতে, একটি সময়সীমা যোগ করতে এবং আবার তিনটি সংখ্যা লিখতে, বর্ধিত হওয়া অবধি এখানে আর কিছু না প্রিন্ট করে।print()
print(txt, end='' )
মুছে ফেলা এবং পুনর্লিখিত তিনটি অঙ্কের কোনও প্রয়োজন নেই - এটি কেবল একটি বিকাশ যা উদাহরণস্বরূপ sys.stdout.write()
বনাম print()
। আপনি একটি পিরিয়ডের সাথে সহজেই প্রাইম হয়ে যেতে পারেন এবং তিনটি অভিনব ব্যাকস্ল্যাশ-বি-ব্যাকস্পেসগুলি (অবশ্যই ফর্ম্যাট পৃষ্ঠাগুলিও না লিখে) ভুলে যেতে পারেন, কেবল পিরিয়ড বারটি আরও একবার প্রিন্ট করে - ফাঁকা স্থান বা নিউলাইন ছাড়াই কেবলমাত্রsys.stdout.write('.'); sys.stdout.flush()
জোড়া।
দয়া করে মনে রাখবেন যে রাস্পবেরি পাই IDLE3 পাইথন শেল ব্যাকস্পেসটিকে ⌫ রুবআউট হিসাবে সম্মান করে না বরং পরিবর্তে একটি ভগ্নাংশের একটি আপাত তালিকা তৈরি করে একটি স্থান মুদ্রণ করে।
- (ও = 8) উইজ