Python中使用prettytable库实现终端表格输出

拾光
拾光
发布时间:2026-10-11| 4人浏览过
原创

介绍Python第三方库prettytable的安装方法及核心用法。通过定义表头、插入行列数据、调整对齐方式以及自定义边框与内置样式,可在终端快速输出清晰易读的ASCII表格。文末附带接口返回数据校验的实战示例,帮助开发者提升命令行数据的可视化体验。

什么是prettytable

prettytable是一款Python第三方工具库,专门用于在终端或日志中生成结构化的ASCII表格。它支持带列标题的数据展示,提供丰富的对齐、边框控制与格式转换功能,非常适合用于自动化脚本输出结果、CLI工具数据渲染或接口测试用例的比对展示。作为外部依赖,使用前需通过包管理器完成安装:

pip install prettytable

基础操作:构建与填充表格

第1步:创建实例并设定表头

首先导入库并实例化,随后通过field_names属性传入列表类型参数定义列名:

from prettytable import PrettyTable

tb = PrettyTable()
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
print(tb)

+--------+------+-----+-----+-----+
| userId | name | sex | age | job |
+--------+------+-----+-----+-----+
+--------+------+-----+-----+-----+

第2步:添加行数据与动态追加列

表格框架搭建完成后,可使用add_row()按顺序填入单行数据(传参为列表),或通过add_column()追加新字段(第一个参数为列名字符串,第二个为值列表):

from prettytable import PrettyTable

tb = PrettyTable()
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_column('address', ['深圳'])
print(tb)

+--------+------+-----+-----+----------+---------+
| userId | name | sex | age | job | address |
+--------+------+-----+-----+----------+---------+
| 123 | 张三 | 男 | 25 | softtest | 深圳 |
+--------+------+-----+-----+----------+---------+

进阶设置:控制对齐方式与外观样式

第3步:统一设置文本对齐方向

默认情况下单元格内容居中显示。通过赋值align属性可批量修改对齐逻辑,其中l代表左对齐,c代表居中,r代表右对齐:

from prettytable import PrettyTable

tb = PrettyTable()
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_row(['124', '李四', '男', '25', 'Java'])
tb.add_column('address', ['深圳', '北京'])
tb.align = 'l'
print(tb)

第4步:切换内置导出格式

若需将表格直接适配Markdown文档或类Word排版,可调用set_style()切换预设模板。使用前需从库中导入对应常量:

from prettytable import PrettyTable, MARKDOWN, MSWORD_FRIENDLY

tb = PrettyTable()
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_row(['124', '李四', '男', '25', 'Java'])
tb.add_column('address', ['深圳', '北京'])

tb.set_style(MSWORD_FRIENDLY)
print("MSWORD风格:\n", tb)
tb.set_style(MARKDOWN)
print("\nMARKDOWN格式:\n", tb)

DEFAULT表格样式:
+--------+------+-----+-----+----------+---------+
| userId | name | sex | age | job | address |
| 123 | 张三 | 男 | 25 | softtest | 深圳 |
| 124 | 李四 | 男 | 25 | Java | 北京 |
MSWORD_FRIENDLY表格样式:
| userId | name | sex | age | job | address |
| 123 | 张三 | 男 | 25 | softtest | 深圳 |
| 124 | 李四 | 男 | 25 | Java | 北京 |
MARKDOWN表格样式:
| userId | name | sex | age | job | address |
|:-------|:-----|:----|:----|:----------|:--------|
| 123 | 张三 | 男 | 25 | softtest | 深圳 |
| 124 | 李四 | 男 | 25 | Java | 北京 |

第5步:自定义边框连接符与线条

ASCII表格的视觉结构由三个独立属性控制:是否渲染边框、横向连线字符、竖向连线字符以及交叉点符号。修改后再次打印即可生效:

from prettytable import PrettyTable

tb = PrettyTable()
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_row(['124', '李四', '男', '25', 'Java'])
tb.add_column('address', ['深圳', '北京'])
tb.align = 'l'

tb.horizontal_char = '*'  # 横线
tb.vertical_char = '|'   # 竖线
tb.junction_char = '|'   # 交叉节点
print(tb)

实战应用:接口返回数据校验输出

在自动化接口测试流程中,对比预期值与实际返回值是核心环节。利用prettytable结合jsonpath解析库,可将杂乱的JSON响应转换为结构化对照表,直观呈现各字段的匹配状态:

from prettytable import PrettyTable
import json
import jsonpath

response_data = """{
  "HEAD": {
    "xTypCod": null,
    "xHdrLen": "203",
    "xSysCod": null,
    "xWkeCod": "WdcTrfSetBeg",
    "xRtnCod": "WYZQA76"
  },
  "BODY": {
    "$ERRORMSG$": [
      {
        "xErrMsg": "WYZQA76锁查步骤表记录失败,批次D019860641"
      }
    ]
  }
}"""

def validate_data(data_str: str, expected: dict) -> None:
    resp = json.loads(data_str)
    tb = PrettyTable()
    tb.field_names = ['比较字段', '预期值', '实际值', '是否通过']
    for field, exp_val in expected.items():
        res_val = jsonpath.jsonpath(resp, f'$..{field}')[0]
        status = 'Y' if exp_val == res_val else 'N'
        tb.add_row([field, exp_val, res_val, status])
    print(tb)

validate_data(response_data, {'xRtnCod': 'WYZQA76', 'xErrMsg': 'WYZQA76锁查步骤表记录失败,批次D019860641'})

+----------+------------------------------------------+------------------------------------------+----------+
| 比较字段 | 预期值 | 实际值 | 是否通过 |
+----------+------------------------------------------+------------------------------------------+----------+
| xRtnCod | WYZQA76 | WYZQA76 | Y |
| xErrMsg | WYZQA76锁查步骤表记录失败,批次D019860641 | WYZQA76锁查步骤表记录失败,批次D019860641 | Y |
+----------+------------------------------------------+------------------------------------------

上述示例演示了如何快速搭建数据比对视图。实际部署时可将封装逻辑写入公共模块,配合requests框架实现一键生成测试报告。以上就是Python prettytable库实现终端表格输出的详细内容,更多关于Python命令行数据可视化的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。