@lenooh ने मेरी क्वेरी को संतुष्ट किया। मैंने 'पायथन दमन न्यूलाइन' की खोज करते हुए इस लेख को खोजा। मैं Puppy के लिए पायथन 3.2 को विकसित करने के लिए रास्पबेरी पाई पर IDLE3 का उपयोग कर रहा हूं। मैं PuTTY कमांड लाइन पर एक प्रगति बार बनाना चाहता था। मैं पेज स्क्रॉल करना नहीं चाहता था। मैं उपयोगकर्ता को फिर से आश्वस्त करने के लिए एक क्षैतिज रेखा चाहता था कि कार्यक्रम रुक नहीं गया है और न ही एक अनंत अनंत लूप पर दोपहर के भोजन के लिए भेजा गया है - एक दलील के रूप में 'मुझे छोड़ दो, मैं ठीक कर रहा हूं, लेकिन इसमें कुछ समय लग सकता है। ' इंटरैक्टिव संदेश - पाठ में प्रगति पट्टी की तरह।
print('Skimming for', search_string, '\b! .001', end='')
अगले स्क्रीन-लिखने की है, जो ⌫⌫⌫ rubout के रूप में तीन backspaces प्रिंट होगा और उसके बाद की अवधि के लिए तैयारी कर रहा, बंद पोंछते '001' और अवधि की लाइन का विस्तार करके संदेश initializes। search_string
उपयोगकर्ता इनपुट को तोता करने के बाद , \b!
मेरे search_string
पाठ के विस्मयादिबोधक बिंदु को अंतरिक्ष में वापस लाने के लिए ट्रिम करता है जो print()
अन्यथा बल देता है, ठीक से विराम चिह्न लगाता है। इसके बाद एक स्पेस और 'प्रगति बार' का पहला 'डॉट' है जिसका मैं अनुकरण कर रहा हूं। अनावश्यक रूप से, संदेश को तब पृष्ठ संख्या (अग्रणी शून्य के साथ तीन की लंबाई तक स्वरूपित) के साथ प्राइमेड किया जाता है ताकि उपयोगकर्ता से नोटिस लिया जा सके कि प्रगति संसाधित हो रही है और जो कि बाद में हमारे द्वारा बनाए गए अवधियों की गिनती को दर्शाएगा। सही।
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'))
लाइन में है। सबसे पहले, बाईं ओर मिटाने के लिए, यह तीन अंकीय वर्णों के कर्सर को '\ b \ b \ b' के साथ s रगड़ के रूप में बैक अप करता है और प्रगति बार की लंबाई में जोड़ने के लिए एक नई अवधि ड्रॉप करता है। फिर यह उस पृष्ठ के तीन अंक लिखता है जो अब तक आगे बढ़ चुका है। क्योंकि sys.stdout.write()
एक पूर्ण बफर या आउटपुट चैनल को बंद करने के लिए इंतजार करता है, sys.stdout.flush()
तात्कालिक लेखन को मजबूर करता है। sys.stdout.flush()
के अंत में बनाया गया है print()
जिसके साथ बाईपास किया गया है print(txt, end='' )
। तब कोड अपने सांसारिक समय गहन संचालन के माध्यम से लूप करता है, जबकि यह तब तक कुछ भी प्रिंट नहीं करता है जब तक कि यह तीन अंकों को वापस पोंछने के लिए वापस नहीं आता है, एक अवधि जोड़ें और तीन अंकों को फिर से लिखें, बढ़े हुए।
मिटाए गए और फिर से लिखे गए तीन अंक किसी भी तरह से आवश्यक नहीं हैं - यह केवल एक उत्कर्ष है जो sys.stdout.write()
बनाम का उदाहरण देता है print()
। आप केवल एक अवधि के साथ आसानी से प्राइम कर सकते हैं और तीन फैंसी बैकस्लैश-बी as बैकस्पेस (निश्चित रूप से फॉर्मेट किए गए पेज काउंट्स नहीं लिख रहे हैं) को भूल सकते हैं, केवल एक बार के माध्यम से पीरियड बार को लंबे समय तक प्रिंट करके - बिना स्पेस या नए प्रयोग के sys.stdout.write('.'); sys.stdout.flush()
जोड़ी।
कृपया ध्यान दें कि रास्पबेरी पाई आईडीएलई 3 पायथन शेल बैकस्पेस को out रूबट के रूप में सम्मानित नहीं करता है, बल्कि एक स्थान को प्रिंट करता है, जिससे भिन्न की एक स्पष्ट सूची बनती है।
- (ओ = 8> विक