python - मैं कंसोल पर एक ही स्थान पर आउटपुट कैसे लिखूं?




console-output (6)

मैं अजगर के लिए नया हूं और एफ़टीपी सर्वर से फ़ाइलों को डाउनलोड करने के लिए कुछ स्क्रिप्ट लिख रहा हूं, आदि। मैं डाउनलोड की प्रगति दिखाना चाहता हूं, लेकिन मैं इसे एक ही स्थिति में रहना चाहता हूं, जैसे कि:

उत्पादन:

फ़ाइल FooFile.txt डाउनलोड करना [47%]

मैं इस तरह से कुछ टालने की कोशिश कर रहा हूँ:

     Downloading File FooFile.txt [47%]
     Downloading File FooFile.txt [48%]
     Downloading File FooFile.txt [49%]

मै यह कैसे कर सकता हूँ?

डुप्लिकेट : मैं कमांड लाइन एप्लिकेशन में वर्तमान लाइन पर कैसे प्रिंट कर सकता हूं?


आप कैरिज रिटर्न का भी उपयोग कर सकते हैं:

sys.stdout.write("Download progress: %d%%   \r" % (progress) )
sys.stdout.flush()

टर्म मॉड्यूल जैसे टर्मिनल-हैंडलिंग लाइब्रेरी का प्रयोग करें:

शाप मॉड्यूल शाप पुस्तकालय के लिए एक इंटरफ़ेस प्रदान करता है, पोर्टेबल उन्नत टर्मिनल हैंडलिंग के लिए डी-फैक्टो मानक।


बैकस्पेस चरित्र \b कई बार प्रिंट करें, और उसके बाद पुरानी संख्या को नए नंबर से ओवरराइट करें।


मुझे निम्नलिखित पसंद है:

print 'Downloading File FooFile.txt [%d%%]\r'%i,

डेमो:

import time

for i in range(100):
    time.sleep(0.1)
    print 'Downloading File FooFile.txt [%d%%]\r'%i,

#kinda like the one above but better :P

from __future__ import print_function
from time import sleep

for i in range(101):
  str1="Downloading File FooFile.txt [{}%]".format(i)
  back="\b"*len(str1)
  print(str1, end="")
  sleep(0.1)
  print(back, end="")

x="A Sting {}"
   for i in range(0,1000000):
y=list(x.format(i))
print(x.format(i),end="")

for j in range(0,len(y)):
    print("\b",end="")




console-output