Printing w/o newlines inside loops - odd behavior

Larry Bates larry.bates at websafe.com
Wed Sep 14 00:02:35 CEST 2005


Take a look at this recipe which is part of the latest
Python Cookbook.  I think it will help you.

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/299207

Larry Bates

Jeffrey E. Forcier wrote:
> This is a difficult issue to search for, and Googling (and reviewing
> the pertinent Python docs) has not found me anything useful. It's also
> not a super important issue, but regardless of whether it's avoidable,
> I still want to know what the heck is going on.
> 
> Doing multiple print statements inside a for loop, using the 'comma at
> the end eats the newline' variant, results in zero output until the
> loop completes its entire iteration.
> 
> def test():
>    print "testing:",
>    for x in range(10):
>        time.sleep(1)
>        print ".",
>    print "done."
> 
> Executing test() results in the behavior described above. If one
> removes the commas after the first two print statements, it behaves
> normally, with "testing" showing up right away, then a period on each
> newline every second until the end.
> 
> I've tried various things--os.system('sleep 1') instead of
> time.sleep(1), sys.stdout.write() instead of print-with-a-comma, and
> other equally silly tactics, to no avail.
> 
> What's going on here?
> 
> Thanks,
> Jeff
> 



More information about the Python-list mailing list