sleep() function, perhaps.

Peter Hansen peter at engcorp.com
Tue Nov 25 11:57:21 EST 2003


Padraig at Linux.ie wrote:
> 
> Ryan Spencer wrote:
> > Hello Everyone,
> >
> >       I want to have a row of periods, separated by small, say, .5 second
> > intervals between each other. Thus, for example, making it have the
> > appearance of a progress "bar".
> 
> You've got the answer for dots, here's a spinner in case it's useful:
> 
> import sys, time
> 
> spinner="|/-\\"
> pos=0
> 
> while 1:
>      sys.stdout.write("\r"+spinner[pos])
>      sys.stdout.flush()
>      time.sleep(.5)
>      pos+=1
>      pos%=4

And a quicky OO version for kicks (untested):

class Spinner:
    CHARS = r"|/-\"
    def __init__(self, stream=sys.stdout):
        self.index = 0
        self.stream = stream
    def spin(self):
        self.stream.write('\r' + self.CHARS[self.index])
        self.stream.flush()
        self.index = (self.index + 1) % len(CHARS)

spin = Spinner()
while 1:
    spin.spin()
    time.sleep(0.5)

-Peter




More information about the Python-list mailing list