Думаю, я немного опоздал, но это должно работать для людей, работающих с текущими версиями python 3 , так как при этом используется "f-strings" , как представлено в Python 3,6 PEP 498 :
Код
from numpy import interp
class Progress:
def __init__(self, value, end, title='Downloading',buffer=20):
self.title = title
#when calling in a for loop it doesn't include the last number
self.end = end -1
self.buffer = buffer
self.value = value
self.progress()
def progress(self):
maped = int(interp(self.value, [0, self.end], [0, self.buffer]))
print(f'{self.title}: [{"#"*maped}{"-"*(self.buffer - maped)}]{self.value}/{self.end} {((self.value/self.end)*100):.2f}%', end='\r')
Пример
#some loop that does perfroms a task
for x in range(21) #set to 21 to include until 20
Progress(x, 21)
выход
Downloading: [########------------] 8/20 40.00%