[Tutor] "Print" behaviour inside a loop?
Chinook
chinook.nr at tds.net
Sun Jun 12 07:16:00 CEST 2005
On Sat, 11 Jun 2005 19:42:27 -0400, Simon Gerber wrote
(in article <42AB76E3.90107 at gmail.com>):
> Hullo,
>
> Firstly, thanks to everyone who helped me find my own IP address. That
> was a big help. That bit is working now, and working very nicely. I am
> now stuck on something purely aesthetic - printing a few dots across the
> screen to provide a bit of feedback while the VPN tunnel is being
> established.
>
> def vpn_connect(choice):
> import time
> ip_addr = ""
> tries = 0
> retries = 10
> print "Connecting to %s" % (choice),
> os.system("pon %s" % (choice))
> while ip_addr == "" and tries < retries:
> print "...", # This is the line causing problems
> time.sleep(0.5)
> ip_addr = get_addr()
> if ip_addr != '':
> #create the route!
> pass
> else:
> tries += 1
> sys.exit()
>
> It works. The problem is, nothing is displayed on screen until after the
> connection occurs - at which point we see:
>
> "Connecting to Prodigi ... ... ... ... ... ... ... "
>
> If I remove the comma at the end of the marked line, the ellipses print
> every .5 seconds as desired, except they print down the screen of course!
>
> After googling around a little, I found a post that seemed to say
> Python won't draw the results of 'print' statements until it hits a
> newline. I tried using sys.stout.write('...'), but had the same problem
> there, too. I've also found a few progress bar classes around the web,
> but I not exactly want a progress bar. I just want to print '...' every
> few seconds until connected.
>
> Any hints? I looked up the python reference manual, but couldn't find
> any way to force print statements to draw. Should I be looking into
> threads, perhaps?
>
> Regards,
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
Just use sys.stdout.writelines(' ... ')
Example:
>>> import sys
>>> sys.stdout.writelines ('... '); sys.stdout.writelines ('... ')
... ... >>>
That what your looking for?
Lee C
More information about the Tutor
mailing list