编写全屏脚本,cursesstyle,更新unixen上的表格输出(latop)

2024-04-24 12:45:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Linux中寻找某种包/api,它们可以在列中显示输出,类似于top的方式。在

例如,保持在给定的时间间隔将输出清理并重写为全屏(我猜watch可能就足够了。但我希望能有一些包装在上面的API)。在

按列轻松排序。特别是如果我按列A排序,那么下次重新打印所有内容时,它会记得每次刷新输出时都按A列排序。在

当然,理想情况下,它也可以处理我的键盘输入。在

总之,我正在寻找可以帮助我以“top”组织输出的包或api。在

澄清一下:我显示的内容可能与系统统计数据完全无关。我喜欢top组织内容的方式。例如,我的输出内容可能是(并且它是不断变化的,这就是为什么它需要被清理和重写):

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

我可以按一个键说“a”,然后按时间排序。如果我按了一个键B,那么它按Col1排序。如果我按Col2排序,那就按Col2排序

当然,这些输出内容可以完全存储在内存中,以任何数据结构进行组织。在


Tags: api内容间隔排序linuxtop方式时间
3条回答

我发现Python中的curses库可以方便地满足这种需求。它仍然不支持列管理,但是它提供了一个不错的解决方案,它有一个合理的语言、一个漂亮的文档和一个可管理的学习曲线。在

如果其他人有更好的建议,我很乐意选择他的最佳答案。在

http://docs.python.org/howto/curses.html

如果您想在shell中执行此操作,watch+printf将是一个快速而肮脏的地方启动watch每隔几秒重新运行一个脚本,printf执行格式化,大致如下:

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

…数据可能是在数组中构造并从数组中输入的。另一种合理的方法是简单地在脚本中循环并发出适当的控制代码来清除每一行(并在开始时移动到窗口顶部)。在

也就是说,这里正确的工具是在诅咒之上建立一个层。已经有很多高级文本小部件在那里设置了,但是我不知道有什么直接支持表的。在

如果您愿意编写C语言,一个这样的咒语包装器是GAP.Browse。在

CDK。我试过了,没关系,感觉有点像GTK。但是printf解决方案要干净得多。在

如果你不介意脚本语言,你可以试试rbcurse,它有更多的特性。不过,它的文档非常糟糕。在

相关问题 更多 >