我目前正在CLI中开展持续监控功能。为了整齐地打印数据,我决定使用tabulate,因为它非常容易,并且适用于我抛出的所有内容。
问题在于连续监控功能基于用户指定的时间间隔进行轮询,但每次轮询时,都会生成并打印一个新表。
采取以下片段:
table_headers = ['Date', 'Message', 'Type']
mapped_data = []
...
...
...
print tabulate(mapped_data, headers=table_headers)
这将是单次迭代的示例,...
是处理和追加数据的地方。但输出结果如下:
Date Message Type
------------------------- -------------- ------
Thu 12 Nov 2015, 18:55:26 Message. 1
Thu 12 Nov 2015, 18:55:58 Message. 2
Date Message Type
------ --------- ------
Date Message Type
------ --------- ------
Date Message Type
------ --------- ------
理想情况下,我想构建一个通用表并随着时间的推移构建它。请注意,必须在收到消息后立即打印该消息。因此,我不能简单地等到过程完成并一次打印所有内容。
使用Python 2.7
答案 0 :(得分:3)
您可以使用str.format
做您想做的事。
注意:在编写标题时,您需要知道每列的宽度。
创建行的模板:
template = '{:<25} {:<14} {:<6}' # numbers are width, '<' means 'align to left'
然后,您可以通过以下方式创建标题:
print template.format(*table_headers)
通过写下来添加破折号:
# changes fill character to dash, and fills template with empty strings
print template.replace(':', ':-').format('', '', '')
通过写:
添加行for row in mapped_data:
print template.format(*row)