Python利用prettytable库在终端输出美观表格

Elena
Elena
发布时间:2026-10-12| 2人浏览过
原创

解决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 库在控制台打造结构化表格界面的详细内容,更多关于终端工具优化的实战技巧请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。