2012-06-13 18 views
12

मुझे लूप (पायथन 3.x) में एक पंक्ति से अधिक प्रिंट करने की आवश्यकता है। अतः पहले से ही पर चारों ओर देख रहे हैं, मैं अपने कोड में इस लाइन डाल:पायथन: कैरिज रिटर्न और कॉमा का उपयोग करके प्रिंट

print('{0} imported\r'.format(tot),) 

हालांकि, यह अभी कई पंक्तियों प्रिंट जब के माध्यम से लूप में चलाया। मैं भी

sys.stdout.write('{0} imported\r'.format(tot)) 

की कोशिश की है, लेकिन यह प्रिंट नहीं करता कुछ भी कंसोल के लिए ...

किसी को भी पता है कि इस के साथ हो रहा है?

+0

'sys.stdout.write()' मेरे लिए काम करता .. आप 'आयात sys' है। क्या आप एक ही लाइन पर आउटपुट ओवरले करने की कोशिश कर रहे हैं? – Levon

+0

यदि आप पाइथन 2.x से 'प्रिंट टेक्स्ट' के समान प्रभाव प्राप्त करने का प्रयास कर रहे हैं, तो आपको 'प्रिंट' (टेक्स्ट, एंड = '') 'के रूप में' end' तर्क 'का उपयोग करने की आवश्यकता है। समारोह तर्क के अंत में अल्पविराम का कोई प्रभाव नहीं पड़ता है। – James

+0

"2.x से" के बारे में निश्चित नहीं है। रेखा 'प्रिंट (टेक्स्ट, एंड =' ')' मुझे '=' पर एक वाक्यविन्यास त्रुटि देता है। – rossmcm

उत्तर

17

पहले मामले में, कुछ सिस्टम \r को एक नई लाइन के रूप में देखेंगे। दूसरे मामले में, आपने flush लाइन नहीं बनाई थी। इस प्रयास करें:

sys.stdout.write('{0} imported\r'.format(tot)) 
sys.stdout.flush() 

के रूप में लेवोन मुझे याद दिलाता है लाइन निस्तब्धता नहीं सभी सिस्टम पर आवश्यक या तो, है - लेकिन यह आम तौर पर एक अच्छा विचार है जब \r इस तरह से इस्तेमाल करते हैं।

+0

@ kevlar1818 जैसा कि मैंने टिप्पणी में उल्लेख किया है, जो मेरे लिए काम करता है (यहां तक ​​कि आउटपुट बफर को फ्लश करने के लिए भी w/o) ... अजीब – Levon

+0

'sys.stdout.flush()' मुझे जो चाहिए था। धन्यवाद! – kevlar1818

9

यदि आप अपनी आखिरी पंक्ति को ओवरराइट करना चाहते हैं तो आपको \ r (चरित्र वापसी) और अंत = "" जोड़ने की आवश्यकता है ताकि आप अगली पंक्ति पर न जाएं।

values = range(0, 100) 
for i in values: 
    print ("\rComplete: ", i, "%", end="") 
print ("\rComplete: 100%") 
3

मैं जनवरी के समाधान का उपयोग करना पसंद है, लेकिन इस तरह से:

values = range(0, 101) 
for i in values: 
    print ("Complete: ", i, "%", end="\r") 
print ("\n\r", end="") 
+3

आपकी अंतिम लाइन ओवरकिल है। यह सिर्फ 'प्रिंट() 'होना चाहिए। –