2012-10-06 28 views
6

निम्नलिखित कोड को 1 से 10 तक 1 सेकंड में प्रिंट करना चाहिए, हालांकि यह वास्तव में कुछ प्रिंट करने से पहले 10 सेकंड तक इंतजार कर रहा है और फिर यह सब प्रिंट करता है तुरंत। मैं आउटपुट को कैसे रोक सकता हूं?पायथन sys.stdout.flush() काम नहीं करता

import sys 
import time 
for count in range(10) : 
    sys.stdout.write(str(count)) 
    sys.stdout.flush() 
    time.sleep(1) 

उत्तर

0

पायथन 2.7, 3.2, और 3.3 सभी आपके लेखन कॉल में कीवर्ड तर्कों की अनुमति नहीं देते हैं। क्या यह उचित कोड है? पाठ्यक्रम का प्रिंट फ़ंक्शन अंतिम कीवर्ड की अनुमति देता है और इसे लिखने से भ्रमित नहीं किया जाना चाहिए। लिखना एक न्यूलाइन चरित्र नहीं जोड़ता है।

'अंत' कीवर्ड तर्क और परीक्षण को हटाने से पता चलता है कि कोड ठीक काम करता है।

+1

त्वरित प्रतिक्रिया के लिए धन्यवाद ... यह एक गलती थी ... अंत के बिना भी = "" कोड अभी भी सब कुछ प्रिंट करने से पहले रोकता है – user1724351

+0

मैं पूरी तरह से और पूरी तरह से समस्या को पुन: उत्पन्न करने में असमर्थ हूं। क्या आप दूसरों को परीक्षण करके इसे एक विशिष्ट पायथन संस्करण तक सीमित कर सकते हैं? क्या ओएस? – whardier

+0

पाइथन 3.2.3 के साथ मैक ओएसएक्स। यह सिर्फ – user1724351

1

समस्या

import sys 
import time 
for count in range(10) : 
    sys.stdout.write("\b%s" % count) 
    sys.stdout.flush() 
    time.sleep(.1) 

पता नहीं क्यों अजगर इस तरह अजीब है मिले लेकिन जाहिरा तौर पर यह इस स्वीकार कर लिया। आपके कोड को ठीक काम करना चाहिए था, लेकिन मुझे लगता है कि पाइथन आपको पसंद नहीं आया था।

+1

मैं अजगर 3.3 बीटीडब्ल्यू का उपयोग करता हूं ताकि यह अन्य संस्करणों में अलग हो। और अधिक शोध किया और पाया कि मुद्रित "end =" \ r "" में बफर को बफर साफ़ कर दिया जाएगा, इसलिए आपको sys आयात करने की आवश्यकता नहीं है और यदि आप जो कुछ भी मुद्रित करते हैं उसे लूप करते हैं तो यह आपके द्वारा मुद्रित किए गए किसी भी चीज़ को प्रतिस्थापित करेगा। यह आउटपुट को वास्तव में शानदार दिखता है – Alexander