Here's a simple module for doing progress reporting. On systems without curses, it simply uses "\r" to return the cursor to the first column. On systems with curses, it also clears to the end of the line. This means that when the progress message gets shorter, there aren't droppings left from the longer ones.
You have to take care that the progress message isn't wider than the screen, but I don't know a nice way to *find* the width of the screen that will work on windows and unix. Hardcoding 80 ain't it either. import sys def progress(s): sys.stderr.write(s + CLEAR_EOL + "\r"); sys.stderr.flush() try: import curses except ImportError: CLEAR_EOL = '' else: curses.setupterm() CLEAR_EOL = curses.tigetstr("el") or '' def test(): import time for j in range(2): for i in range(100): progress("Doing item %d, %d%%" % (i * 100, i)) time.sleep(.01) if __name__ == '__main__': test()
pgpzfL5bt0IvZ.pgp
Description: PGP signature
-- http://mail.python.org/mailman/listinfo/python-list