Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

终端表格(ttable)

效果展示

+-----------------------------------------------------------------------------------------------------------------+
|                                              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 查看效果