Printing/updating output to the screen

Larry Bates lbates at swamisoft.com
Thu Jan 29 17:19:47 CET 2004


Daniel,

Here is an example progressbar class that
I use in my programs.

-Larry

class progressbarClass:
    def __init__(self, finalcount):
        import sys
        self.finalcount=finalcount
        self.blockcount=0
        self.block="*"
        self.f=sys.stdout
        #
        # If the final count is zero, don't start the progress gauge
        #
        if not self.finalcount : return
        self.f.write('\n------------------ %
Progress -------------------1\n')
        self.f.write('    1    2    3    4    5    6    7    8    9    0\n')
        self.f.write('----0----0----0----0----0----0----0----0----0----0\n')
        return

    def progress(self, count):
        if (count > self.finalcount): count=self.finalcount
        if (self.finalcount != 0) :
            percentcomplete=int(round(100*count/self.finalcount))

            if (percentcomplete < 1):
                percentcomplete=1
        else:
            percentcomplete=100

        blockcount=int(percentcomplete/2)
        if (blockcount > self.blockcount):
            for i in range(self.blockcount,blockcount):
                self.f.write(self.block)
                self.f.flush()

        if (percentcomplete == 100):
            self.f.write("\n")

        self.blockcount=blockcount
        return

if __name__ == "__main__":
    from time import sleep
    pb=progressbarClass(8)
    count=0
    while count<9:
        count+=1
        pb.progress(count)
        sleep(0.2)

    pb=progressbarClass(100)
    pb.progress(20)
    sleep(0.2)
    pb.progress(47)
    sleep(0.2)
    pb.progress(90)
    sleep(0.2)
    pb.progress(100)
    print "testing 1:"
    pb=progressbarClass(1)
    pb.progress(1)

"Daniel Pryde" <dpryde+usenet at cis.strath.ac.uk> wrote in message
news:40192945$1 at nntphost.cis.strath.ac.uk...
> Hi there. I hope this isn't a stupid question to ask, but does anyone
> know how to print out a string without moving to a new line each time
> and simply updating the first line. An example would be, if I wanted to
> have a percentage progress counter that was constantly updating. I'm
> unsure how to do this without printing to a brand new line. Any help
> would be greatly appreciated. Thanks.
>
> Daniel
>





More information about the Python-list mailing list