Python输出表格
效果 #!/usr/bin/python3 # _*_ coding: utf-8 _*_ # @Time: 2020/3/18 16:15 # @Author: Luo.Chris from time import sleep # 单元格类 class Cell: def __init__(self, data={}): if "text" in data: self.text = data["text"] else: self.text = "" if "length" in data 在Python编程中,有时我们需要将数据以表格的形式输出到控制台,这在处理日志、监控数据或简单数据显示时非常有用。本示例提供了一种自定义的方式,通过定义`Cell`和`Grid`类来实现这个功能。下面将详细解释这些知识点: 1. **单元格类(`Cell`)**: - `Cell`类用于表示表格中的一个单元格,包含了数据存储和格式化的基本功能。 - `__init__`方法初始化单元格,接受一个字典`data`作为参数,字典可能包含以下键: - `"text"`:单元格的主要文本内容,默认为空字符串。 - `"length"`:指定单元格的宽度,默认为0。 - `"color"`:用于控制单元格文本的颜色,这里使用ANSI转义码来设置颜色,例如`\033[1;36m`代表亮蓝色。 2. **表格类(`Grid`)**: - `Grid`类用于表示整个表格,包括表头和行数据。 - `head`属性存储表头数据,初始化为空列表。 - `lines`属性存储所有行数据,也初始化为空列表。 - `initialLineData`方法用于初始化一行数据,根据列数据创建`Cell`对象并填充到列表中。 - `addLine`方法接收一列数据,用于向表格中添加新行,它首先调用`initialLineData`生成新行,然后将其添加到`lines`列表中。 - `buildLine`方法构建单行输出,根据表头的长度和单元格内容生成字符串。 - `buildTypeLine`方法构建特定类型的行,如顶部线、底部线和分割线。 - `buildAll`方法组合所有的行和边线,生成完整的表格字符串。 3. **颜色编码**: - ANSI转义码用于控制终端文本的颜色和样式,例如`\033[1;36m`开启高亮并设置文字颜色为亮蓝色。`\033[0m`用来重置所有样式和颜色。 4. **输出与刷新**: - 示例代码中,`print(grid.buildAll())`会打印出整个表格。 - 使用`\033[A`序列可以将光标上移,实现覆盖前一行输出的效果,达到刷新数据的目的。这种技巧在某些终端(如Xshell)有效,但在其他一些程序(如PuTTY)可能不适用。 5. **动态更新**: - 示例展示了如何动态修改表格中的数据,例如`grid.lines[0][3].text = 'stopped'`将第一行的第四列文本更改为“stopped”。 6. **结构与设计**: - 这个实现是自定义的,对于简单的表格输出是足够的,但对于复杂或大型的数据,可能需要使用像`prettytable`、`tabulate`或`pandas`这样的库,它们提供了更丰富的功能和更好的可读性。 该示例提供了一种基本的Python表格输出实现,通过自定义的`Cell`和`Grid`类实现了表格的创建、数据填充、显示以及动态更新。然而,对于实际项目,考虑使用成熟的库可能会更加高效和灵活。