progress bar windows

* Made the progress bar 1 character smaller by default, good for windows CMD
This commit is contained in:
ryuslash 2010-01-17 16:43:42 +01:00
parent 10f2f918a1
commit e750aada18

View file

@ -2,11 +2,12 @@ import sys
import time import time
class Progress(): class Progress():
def __init__(self, maxvalue, maxwidth=80, fd=sys.stdout): def __init__(self, maxvalue, maxwidth=79, fd=sys.stdout):
self.maxwidth = maxwidth self.maxwidth = maxwidth
self.maxvalue = maxvalue self.maxvalue = maxvalue
self.fd = fd self.fd = fd
self.fill_char = '#' self.prog_char = '#'
self.fill_cahr = ' '
self.show_progress(0) self.show_progress(0)
@ -15,7 +16,7 @@ class Progress():
str_maxvalue = str(self.maxvalue) str_maxvalue = str(self.maxvalue)
true_maxwidth = self.maxwidth - 4 - len(str_value) - len(str_maxvalue) true_maxwidth = self.maxwidth - 4 - len(str_value) - len(str_maxvalue)
progress = int(round((true_maxwidth/float(self.maxvalue))*value)) progress = int(round((true_maxwidth/float(self.maxvalue))*value))
self.fd.write("\r%s/%s [%s%s]" % (str_value, str_maxvalue, self.fill_char * progress, " " * (true_maxwidth - progress))) self.fd.write("\r%s/%s [%s%s]" % (str_value, str_maxvalue, self.prog_char * progress, self.fill_char * (true_maxwidth - progress)))
self.fd.flush() self.fd.flush()
if value == self.maxvalue: if value == self.maxvalue:
self.fd.write("\n") self.fd.write("\n")
@ -24,4 +25,4 @@ if __name__ == "__main__":
prog = Progress(200) prog = Progress(200)
for i in range(1, 201): for i in range(1, 201):
prog.show_progress(i) prog.show_progress(i)
time.sleep(1) time.sleep(0.1)