help with printing to stdout...

Hendrik van Rooyen mail at microcorp.co.za
Sun Mar 8 13:48:31 CET 2009


"Daniel Dalton" <d.dalton at iinet.net.au> wrote:

> I've got a program here that prints out a percentage of it's
> completion. Currently with my implimentation it prints like this:
> 0%
> 1%
> 2%
> 3%
> 4%
> 
> etc taking up lots and lots of lines of output... So, how can I make it
> write the percentage on the same line eg. 
> while working:
>   print percent
> every time the line print percent is ran it should delete the old
> percentage from the screen, replacing it with the new one, so as to only
> use up one line... Basically I'm just printing a string of text to the
> screen and every time my print command is ran I would like the old text
> to be removed and my new text added (talking about the one line of the
> screen here)... This is a command line program, under linux...

Play with the following:

put a comma after the print, like this:

print percent,    #This keeps it on the same line

Then put a carriage return at the start, like this:

print '\r',percent,

or like this:

print '\r'+str(percent),

Then make sure it gets sent out, like this:

sys.stdout.flush()

Alternatively, you can play with backspaces instead of the carriage return:

print '\b\b\b\b',
print percent,
sys.stdout.flush()

And see what happens.

- Hendrik





More information about the Python-list mailing list