python – 脚本全屏,curses风格,更新unixen上的表格输出(la top)

我在Linux中寻找某种类型的软件包/ API,它们可以在类似于top的列中显示输出.

例如,保持清洁并以给定的间隔将输出重写为全屏(我猜watch可能做得足够好.但我希望有一些API包装在它之上).

按列排序很容易.特别是如果我按列A排序,那么当下次重新打印所有内容时,它会记住每次刷新输出时按列A排序.

当然,理想情况下它也可以为我处理键盘输入.

总而言之,我正在寻找可以帮助我以“顶级”组织方式组织输出的软件包或API.

为了清楚起见:我显示的内容可能与系统统计信息完全无关.我喜欢top组织内容的方式.例如,我的输出内容可能是(并且它不断变化,这就是需要清理和重写的原因):

Time Col1 Col2
12 4 13
13 5 19
14 5 15

我可以按一个键说“A”然后按时间排序.如果我按下了一个键B,那么它会被Col1排序.如果我按一个键说C然后它按Col2等排序等.

当然,这个输出内容可以完全在内存中,以任何数据结构组织.

最佳答案
如果你想在shell中执行此操作,请注意printf将是一个快速而肮脏的起点 – 每隔几秒钟重新运行一个脚本,printf进行格式化,大致如下:

printf '%-20s %-20s\n' \
  header1 header2 \
  line1data1 line1data2 \
  line2data1 line2data2 ...

…数据可能是在数组中构建的,也可能是从数组中提供的.只需在脚本中循环并发出适当的控制代码以清除每一行,因为您即将覆盖它(并在开头移动到窗口的顶部)是另一种合理的方法.

也就是说,这里正确的工具将是一个建立在curses之上的层.已经有许多更高级别的文本小部件集 – 但我不知道有任何直接支持表的东西.

如果你愿意写C,那么围绕curses的这个包装就是GAP.Browse.

转载注明原文:python – 脚本全屏,curses风格,更新unixen上的表格输出(la top) - 代码日志