Printing/updating output to the screen
Larry Bates
lbates at swamisoft.com
Thu Jan 29 11:19:47 EST 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