1. 简介
Terminaltables是一个Python库,用于在终端显示漂亮的表格。它允许轻松地创建表格,并支持自定义单元格样式、单元格渲染和分页等功能。Terminaltables的主要优点是易于使用和高度可定制性。它是一个完全免费、开源的库,可用于任何Python项目中。
2. 安装
2.1 pip 安装
使用 pip 命令来安装Terminaltables
pip install terminaltables
2.2 clone 安装
从Github上下载源代码来手动安装
git clone https://github.com/Robpol86/terminaltables.git
cd terminaltables
python setup.py install
3. 使用 Terminaltables 创建表格
在创建表格之前,首先需要导入Terminaltables库
from terminaltables import AsciiTable
3.1 创建基本的表格
一个基本的表格由行和列组成。每个单元格都是一个数据单元格。
table_data = [
['Name', 'Age', 'Sex'],
['John Smith', 35, 'Male'],
['Sarah Johnson', 28, 'Female'],
['Michael Brown', 45, 'Male'],
]
table = AsciiTable(table_data)
print(table.table)
输出结果为:
+----------------+-----+--------+
| Name | Age | Sex |
+----------------+-----+--------+
| John Smith | 35 | Male |
| Sarah Johnson | 28 | Female |
| Michael Brown | 45 | Male |
+----------------+-----+--------+
3.2 自定义单元格样式
Terminaltables允许用户自定义单元格样式。每个单元格都可以用不同的颜色、背景颜色和边框样式来渲染。
from terminaltables import SingleTable
table_data = [
['Name', 'Age', 'Sex'],
['John Smith', 35, 'Male'],
['Sarah Johnson', 28, 'Female'],
['Michael Brown', 45, 'Male'],
]
table_instance = SingleTable(table_data, 'Contacts')
table_instance.justify_columns[1] = 'right' # 右对齐 Age 列
table_instance.table_data[0] = [val.upper() for val in table_instance.table_data[0]] # Name, Age, Sex 大写
table_instance.inner_row_border = True # 显示行内边框
table_instance.inner_column_border = False # 不显示列内边框
table_instance.title = table_instance.title.upper() # Contacts 大写
print(table_instance.table)
输出结果为:
.------------.----------------.------.
| CONTACTS | AGE | |
+------------+----------------+------+
| NAME | SEX | AGE |
+------------+----------------+------+
| JOHN SMITH | Male | 35 |
| SARAH JOHNSON | Female | 28 |
| MICHAEL BROWN | Male | 45 |
'-------------'----------------'------'
3.3 分页输出表格
当表格数据很大时,可以使用Terminaltables的Pager,将表格分成多个页面,每页包含指定行数的数据。
from terminaltables import AsciiTable, Pager
data = []
for i in range(1, 101):
data.append(['user{}'.format(i), 'pwd{}'.format(i)])
table = AsciiTable(data)
pager = Pager(rows=10)
page_num = 1
while True:
print('\nPage: {}\n'.format(page_num))
table.page_number = page_num
pager.append(table.table)
page_num += 1
if not pager.more:
break
input('Press Enter to continue...')
print(chr(27) + "[2J") # 清屏
注意:使用该代码需要在终端中运行,或者在支持终端显示的程序中运行。
4. 结论
Terminaltables是一个易于使用且高度可定制的Python库,它可帮助用户在终端中创建漂亮的表格。使用Terminaltables,用户可以轻松地创建和编辑表格,自定义单元格样式、单元格渲染和分页等功能,以满足他们的要求。