# -*- coding: utf-8 -*- import sys class AsciiProgressBar: def __init__(self, max=None, berLength=50, foreground=chr(219), background=chr(177)): self.max = 20 if max == None else max self.__barLength = berLength self.__fg = foreground self.__bg = background self.__setDefaults() def __setDefaults(self): self.__step = (1.0 * self.__barLength)/self.max def current(self, value, message = ''): """ Sets current value. Optional {message} is displayed after progress bar. """ x = int(self.__step * (value % (self.max + 1))) pb = ' ' + (x * self.__fg) + (self.__bg * (self.__barLength - x)) + '%s' sys.stdout.write((pb % message)) sys.stdout.write(b'\r') def setMax(self, max): """ Set max value. """ self.max = max self.__setDefaults() def setBarLength(self, length=50): """ Sets lenght of progress bar. """ self.__barLength = length self.__setDefaults() def setForeground(self, fg): self.__fg = fg def setBackground(self, bg): self.__bg = bg if __name__ == "__main__": """ http://www.asciitable.com/ """ import time pb = AsciiProgressBar(299, 40) print '\n\n' for i in xrange(300): pb.current(i, ' current i is %s' % i) time.sleep(0.01); print ''