今天论坛里有人问怎么实现类似linux top那样输出的效果. 


单行不换行这个知道.但是这么多行一直输出还真没折腾过.


搜索发现 curses 可以实现这个效果.


一个把当前 ps aux 部分进程显示出来的脚本

#!/usr/bin/env python

import curses
import os

ch = 0

while ch != ord("q"):
    screen = curses.initscr()
    screen.clear()
#    screen.border(0)
    
    for i in range(100):
        try:
            screen.addstr(i+1,0,os.popen("ps aux |awk 'NR==%s'" % i).read(),curses.A_NORMAL)
            screen.refresh()
        except:
            pass

    ch = screen.getch()
    
curses.endwin()



详细参考:

docs.python.org/2/howto/curses.html

tuxradar.com/content/code-project-build-ncurses-ui-python

stackoverflow.com