On Dec 13, 2:29 pm, Karlo Lozovina <_kar...@_mosor.net_> wrote: > Hi, I'm trying to implement text output interface, something similar to > wget, using curses module. There are just two things I can't find out how > to do: prevent curses from clearing the terminal when starting my program, > and leaving my output after the program closes. Any way to do this with > curses?
Unless you are referring to some wget screen mode I don't know about, I suspect wget outputs its progress bar using carriage returns without newlines. If that's all you want, there is no need to use curses. Here is a little example program to illustrate: import time, sys for i in range(21): sys.stdout.write('\rProgress: [' + '='*i + ' '*(20-i) + ']') sys.stdout.flush() time.sleep(1) sys.stdout.write("\nFinised!\n") Notice I'm using sys.stdout.write instead of print, because print automatically appends a newline (which we don't want here). Yes you can suppress the newline on print by using a trailing comma, but that creates an undesirable artifact--a leading space--on the following cycle. Notice the '\r' at the beginning of the sys.stdout.write call. This tells the terminal to move the cursor back to the beginning of the line, whence it draws the new progress bar over the old progress bar. And finally, notice the call to sys.stdout.flush(). When a program is run on a terminal the underlying I/O is usually line-buffered, meaning that nothing actually gets output until a newline character is sent. Therefore we have to call sys.stdout.flush() to flush the buffer manually. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list