def progressbar ( total , pos , msg = "" ) : width = get_terminal_size ( ) [ 0 ] - 40 rel_pos = int ( float ( pos ) / total * width ) bar = '' . join ( [ "=" * rel_pos , "." * ( width - rel_pos ) ] ) # Determine how many digits in total (base 10) digits_total = len ( str ( total ) ) fmt_width = "%0" + str ( digits_total ) + "d" fmt = "\r[" + fmt_width + "/" + fmt_width + "][%s] %s" progress_stream . write ( fmt % ( pos , total , bar , msg ) )
how to show progress bar in python for some code
Given a total and a progress position output a progress bar to stderr . It is important to not output anything else while using this as it relies soley on the behavior of carriage return ( \\ r ) .
def progressbar(total, pos, msg=""):
    """
    Given a total and a progress position, output a progress bar
    to stderr. It is important to not output anything else while
    using this, as it relies soley on the behavior of carriage
    return (\\r).

    Can also take an optioal message to add after the
    progressbar. It must not contain newlines.

    The progress bar will look something like this:

    [099/500][=========...............................] ETA: 13:36:59

    Of course, the ETA part should be supplied be the calling
    function.
    """
    width = get_terminal_size()[0] - 40
    rel_pos = int(float(pos) / total * width)
    bar = ''.join(["=" * rel_pos, "." * (width - rel_pos)])

    # Determine how many digits in total (base 10)
    digits_total = len(str(total))
    fmt_width = "%0" + str(digits_total) + "d"
    fmt = "\r[" + fmt_width + "/" + fmt_width + "][%s] %s"

    progress_stream.write(fmt % (pos, total, bar, msg))