Python: display refreshing status (like top)
In scripts I often want to display some status information (e.g. progress), this can be achieved with e.g.:
print "progress: %i %%\r" % i, sys.stdout.flush()
but this just works for one-liners. I wanted to have what top or less do: open a new “window” and being able to write everywhere in the window, not just on the last line.
Found out that curses does exactly that - but I didn’t find a stripped-to-the-bare-necessities-example, so here you are:
import curses, time
from datetime import datetime
w = curses.initscr()
try:
while True:
w.erase()
w.addstr("some status..\ncurrent time\n%s" % datetime.now())
w.refresh()
time.sleep(1)
finally:
curses.endwin()