Terminal application with non-standard print

Hans Mulder hansmu at xs4all.nl
Mon Jan 25 21:55:03 CET 2010


Grant Edwards wrote:
> On 2010-01-24, R?mi <babedoudi at yahoo.fr> wrote:
> 
>> I would like to do a Python application that prints data to stdout, but
>> not the common way. I do not want the lines to be printed after each
>> other, but the old lines to be replaced with the new ones, like wget
>> does it for example (when downloading a file you can see the percentage
>> increasing on a same line).
> 
> sys.stdout.write("Here's the first line")
> time.sleep(1)
> sys.stdout.write("\rAnd this line replaces it.")

That does not work on my system, because sys.stdout is line buffered.
This causes both strings to be written when sys.stdout is closed because
Python is shutting down.

This works better:

     import sys, time

     sys.stdout.write("Here's the first line")
     sys.stdout.flush()
     time.sleep(1)
     sys.stdout.write("\rAnd this line replaces it.")
     sys.stdout.flush()


Hope this helps,

-- HansM




More information about the Python-list mailing list