Python利用prettytable库在终端输出美观表格
解决Python命令行文本杂乱难读的问题,通过安装并使用第三方开源库prettytable,开发者可轻松创建排版整洁的数据表格。本文详解如何按行或列添加数据、从CSV或数据库导入记录、利用切片与参数筛选特定行列,以及自定义对齐、边框等样式,让终端数据展示更高效直观。
为什么需要在终端输出表格?
在使用 Python 编写 CLI 工具管理云服务器资源、日志或系统信息时,纯文本输出往往缺乏层次感,长串数据在命令行窗口中极易造成视觉疲劳。为了让结构化数据更易于阅读,引入第三方表格库是高效的选择。其中,prettytable 是一个轻量级且对中文兼容性极佳的开源工具,它能自动计算列宽并对齐字符,将杂乱的控制台文本瞬间转化为清晰的矩阵表格。
安装与环境准备
该库不属于 Python 标准库,需通过包管理器单独下载。由于底层实现不涉及复杂的依赖,大多数操作系统均可顺畅运行。
pip install prettytable
初始化表格与基础数据录入
创建表格主要分为指定表头和逐行追加两种基本模式。现代 Python 版本默认采用 Unicode 编码,无需额外配置编码模块即可直接打印中文。
第1步:定义表头并实例化
通过向 PrettyTable 构造函数传递包含字符串的列表,可以预先设定每一列的名称。若未提供表头列表,系统将自动生成以 “Field” 开头的默认占位名称,影响可读性。
from prettytable import PrettyTable
table = PrettyTable(['编号', '云编号', '名称', 'IP地址'])
第2步:按行追加数据记录
调用 add_row() 方法可将包含单个对象元素的列表写入表格的一行。每次添加都必须确保元素数量与表头宽度严格匹配。
table.add_row(['1', 'server01', '服务器01', '172.16.0.1'])
table.add_row(['2', 'server02', '服务器02', '172.16.0.2'])
print(table)
扩展数据来源与批量导入
除了逐个追加,prettytable 提供了丰富的接口来处理现有的文件或数据库结果集,减少手动拼装数据的冗余。
第3步:按列填充横向数据
如果数据结构更适合以纵向维度呈现,可以使用 add_column(name, column_data)。name 指定该列的标题,第二个参数则是包含数值的列表。这种方式免去了实例化时的表头声明。
table.add_column('项目', ['编号', '云编号', '名称', 'IP地址'])
table.add_column('值', ['1', 'server01', '服务器01', '172.16.0.1'])
第4步:直接从 CSV 文件读取
针对本地存储的结构化记录,利用 from_csv() 函数可直接将文件流转换为表格对象。需要注意,源文件必须为标准逗号分隔的 .csv 格式,直接修改 .xls 后缀会导致解析失败。
from prettytable import from_csv
fp = open("resources.csv", "r", encoding='utf-8')
table = from_csv(fp)
fp.close()
print(table)
第5步:注入 SQL 查询结果与 HTML
当对接 SQLite 或 MySQL 数据库时,可以通过游标对象获取结果集。只要查询语句能正常返回二维数据数组,即可无缝填入表格框架中。对于前端或网络抓取的网页数据,也可借助 from_html() 解析 HTML 字符串,但需注意该函数返回的是一个包含表格对象的列表,打印时必须访问索引 [0] 才能触发字符串显示。
灵活控制输出视图与界面样式
在实际开发中,控制台屏幕空间有限,往往需要对庞大表数据进行裁剪、排序或换肤。
第6步:执行行列切片与多维排序
使用原生 Python 语法对实例化对象进行区间切片(如 table[0:3])可以直接获取一个全新的子表格副本,非常适合截取前几页预览。若需保持全量数据但改变显示顺序,可在调用 get_string() 时传入 sortby='列名' 配合 reversesort=True 完成逆序排列。
第7步:调整全局对齐与自定义边框
默认的表格边框较为规整,可通过 set_style() 切换为 MSWORD_FRIENDLY 或更简洁的 PLAIN_COLUMNS。进一步地,通过修改实例属性可以实现高度拟真或极简风格的终端渲染:
table.align['列名'] = 'l' / 'c' / 'r':分别控制左对齐、居中或右对齐。table.border = True/False:开关整个外框线。table.junction_char、horizontal_char、vertical_char:这三个属性接管了水平连线、垂直连线与交叉节点的 ASCII 符号。
上述属性能够组合出类似复古终端或高对比度模式的效果,完全满足个性化运维面板的输出需求。
以上就是利用 Python prettytable 库在控制台打造结构化表格界面的详细内容,更多关于终端工具优化的实战技巧请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













