sys.stdout is not flushed

Diez B. Roggisch deets at nospam.web.de
Mon Nov 23 17:08:25 EST 2009


Jankins schrieb:
> I am trying to use sys.stdout to print out "process-bar" like:
> -->1%
> 
> Here is my program ‘test.py’:
> 
> from sys import stdout
> for v in range(10):
>     stdout.write('-->%d' % v)
>     stdout.flush()
> else:
>     stdout.write('done!')
> #end for
> 
> Then, I use 'python -u test.py' to run this script. But what I get
> is :
> -->0-->1-->2-->3-->4-->5-->6-->7-->8-->9done!
> 
> I am suppose to get 'done!'.
> 
> Can anybody help me about this?

You misunderstand what "flush" means. It is not about clearing the 
screen, or the line.

Try printing

   stdout.write('\r-->%d')

Diez



More information about the Python-list mailing list