+-----------------------------------------------------------------------------------------------------------------+
| ttable with complicated header |
+--------------------------------+--------------------------------------------------------------------------------+
| | I/O stats last min |
| info +---------------------+-----------------------------------+----------------------+
| | transfer | max time | # of ops |
+-------------+------------------+----------+----------+-----------+----------+------------+------+-------+-------+
| IP | last error | read | write | read | write | fsync | read | write | fsync |
+-------------+------------------+----------+----------+-----------+----------+------------+------+-------+-------+
| 192.168.1.1 | no errors | 19 MiB/s | 27 MiB/s | 263625 us | 43116 us | 262545 us | 3837 | 3295 | 401 |
| 192.168.1.2 | no errors | 25 MiB/s | 29 MiB/s | 340303 us | 89168 us | 223610 us | 2487 | 2593 | 366 |
| 192.168.1.3 | 2012-10-12 07:27 | - | - | - | - | - | - | - | - |
| 192.168.1.4 | no errors | - | - | - | - | - | - | - | - |
| 192.168.1.5 | no errors | 17 MiB/s | 11 MiB/s | 417292 us | 76333 us | 1171903 us | 2299 | 2730 | 149 |
+-------------+------------------+----------+----------+-----------+----------+------------+------+-------+-------+
x = ttable("Test title",4)
x.header("column1","column2","column3","column4")
x.append("t1","t2","very long entry","test")
x.append(("r","r3"),("l","l2"),"also long entry","test")
print x
- 白色----------0
- 红色----------1
- 橘黄色--------2
- 黄色----------3
- 绿色----------4
- 青色----------5
- 蓝色----------6
- 品红----------7
- 灰色----------8
("txt","3"),其中的数字则为颜色
- l 靠左
- r 靠右
- c 居中
("txt","l")
x.defattr("l","l")
x = ttable("host info",2)
x.defattr("l","l")
x.header("host_group","host")
elements={
"host_group1":["127.0.0.1","127.0.0.2","127.0.0.3"],
"host_group2":["127.0.0.1","127.0.0.2"]
}
lastpos = len(elements) - 1
for i, host_group in enumerate(elements):
ip_list = elements[host_group]
for j,ip in enumerate(ip_list):
# 填充数据
if j == 0:
x.append(host_group,ip)
else:
x.append("",ip)
# 分割线
if j < (len(ip_list)-1):
x.append("", "---")
# 分割线
if i < lastpos:
x.append("---", "---")
print x
如上
- 填充数据的部分在最里面的循环中,因为第一行的内容和其他内容不同,所以需要判断是否是第一行并填充不同数据
- 为防止最后一条分割线与下个表格的分割线重复,则通过判断是否为循环的最后一个元素,最后一个元素则不输出分割线
其他可以直接执行 table.py 查看效果