Python aesthetic-text包全面解析:功能特性、安装步骤、使用示例与注意事项
aesthetic-text 是一个专注于文本视觉美化的第三方 Python 库。它能够为终端输出、文件内容或 Web 应用中的文字自动添加丰富的装饰效果,如边框、颜色、渐变、符号点缀等,无需手动编写复杂的格式化代码即可生成美观且结构清晰的文本内容。
该工具广泛适用于命令行工具界面优化、日志信息可视化展示、报告文档生成以及社交媒体文案设计等多种场景。
aesthetic-text
一、主要功能介绍
1. 文本装饰
支持为文本添加多种样式修饰,包括实线/虚线/圆角边框、前后缀符号(例如星星、箭头、括号)以及分隔线,提升整体可读性和视觉吸引力。2. 颜色渲染
兼容终端 256 色显示,并支持通过颜色名称、HEX 值或 RGB 元组设置前景色(文字颜色)和背景色,实现独立控制,增强配色自由度。3. 渐变特效
提供线性与径向两种渐变模式,可在单行文本上实现多色彩过渡效果,使关键信息更具视觉冲击力。4. 格式布局优化
支持文本左对齐、居中、右对齐;可根据设定宽度自动换行;并可通过自定义字符填充空白区域,适配不同显示环境。5. 符号点缀支持
内置常用装饰符号库(如 ★、■、●、─),同时允许用户自定义符号集,满足个性化排版需求。6. 多平台适配能力
兼容标准终端输出(stdout)、纯文本(TXT)及 Markdown 文件写入操作,也可集成至 Flask、Django 等 Web 框架中用于动态文本渲染。二、安装流程说明
1. 环境要求
- Python 版本:建议使用 3.8 及以上版本,最低支持 3.7
- 无强制依赖库,但终端彩色输出依赖系统对 ANSI 转义序列的支持;Windows 用户需额外配置以启用颜色显示
colorama
2. 安装指令
推荐通过官方 PyPI 源进行安装:pip install aesthetic-text
pip
3. 安装验证
执行以下 Python 代码片段,若无报错且正常输出美化文本,则表示安装成功:from aesthetic_text import aesthetic_text as at
print(at.decorate("安装成功!"))
三、核心语法与参数详解
aesthetic-text
该库的核心类为 AestheticText,通常导入时简写为 at。其主要提供三个高频使用的函数:decorate()(基础装饰)、color_gradient()(颜色渐变)、add_border()(添加边框)。以下是各函数的具体用法和参数说明。
1. 基础装饰函数:at.decorate()
at.decorate()
at.decorate(
text: str, # 输入原始文本
align: str = "left", # 对齐方式:left / center / right
width: int = None, # 总宽度(设为None则根据内容自适应)
prefix: str = "", # 添加前缀符号(如"★ ")
suffix: str = "", # 添加后缀符号(如" ★")
fill_char: str = " ", # 填充空白位置的字符(如"─")
fg_color: str = None, # 文字颜色(支持颜色名、HEX、RGB)
bg_color: str = None, # 背景颜色
bold: bool = False, # 是否加粗显示
italic: bool = False # 是否斜体(需终端支持)
) -> str
颜色参数格式支持:
| 格式类型 | 示例 | 说明 |
|---|---|---|
| 颜色名 | "red", "blue", "cyan" | 支持 16 种标准终端颜色 |
| HEX | "#FF5733", "#00FF00" | 六位十六进制颜色码 |
| RGB | (255, 87, 51) | 三元组形式,数值范围 0–255 |
2. 渐变着色函数:at.color_gradient()
at.color_gradient()
at.color_gradient(
text: str, # 需应用渐变的文本
start_color: str/tuple, # 起始颜色(支持上述任意格式)
end_color: str/tuple, # 结束颜色
gradient_type: str = "linear" # 渐变类型:"linear"(线性)或 "radial"(径向)
) -> str
3. 边框封装函数:at.add_border()
at.add_border()
at.add_border(
text: str, # 待包围的文本(支持多行)
border_type: str = "solid", # 边框样式:"solid"(实线)、"dashed"(虚线)、"rounded"(圆角)
border_color: str = None, # 边框颜色
padding: int = 1, # 内边距大小(单位:字符数)
title: str = None, # 边框顶部标题(可选)
title_align: str = "center" # 标题对齐方式
) -> str
四、八个典型应用实例
以下案例涵盖终端界面美化、日志高亮、报告标题设计等常见用途,所有代码均可直接运行测试。aesthetic_text
at
decorate()
color_gradient()
add_border()案例1:终端欢迎语(边框+渐变+居中)
目标是创建一个具有圆角边框和颜色渐变效果的终端欢迎界面,适用于工具启动时展示。
from aesthetic_text import aesthetic_text as at
# 1. 创建红到紫的线性渐变文本
gradient_text = at.color_gradient(
"Welcome to Aesthetic-Text Demo",
start_color="#FF3366",
end_color="#9933FF",
gradient_type="linear"
)
# 2. 添加青色圆角边框,并在顶部居中显示标题
welcome_msg = at.add_border(
gradient_text,
border_type="rounded",
border_color="cyan",
padding=2,
title="TOOL START",
title_align="center"
)
# 3. 输出美化后的欢迎信息
print(welcome_msg)
输出效果为:终端中呈现一个带有圆角、青色边框的文本框,内部文字呈现从红色到紫色的渐变,整体居中排布,顶部有“TOOL START”居中标题。
案例4:终端进度提示(填充+对齐)
模拟任务执行过程中的进度反馈,通过填充字符构建可视化进度条,并配合对齐的文字说明提升可读性。
from aesthetic_text import aesthetic_text as at
# 定义当前进度与总进度
current = 30
total = 100
percentage = (current / total) * 100
# 生成进度条(使用 '=' 填充已完成部分)
progress_bar = "[" + "=" * (current // 5) + "-" * ((total - current) // 5) + "]"
# 美化输出:左对齐任务名,右对齐百分比
output = at.align(
f"正在处理数据... {progress_bar} {percentage:.0f}%",
width=80,
align="left"
)
print(output)
结果显示一条宽度适配的进度条,左侧为任务描述,中间由等号和短横组成进度指示,右侧显示完成百分比,整体清晰直观。
pip
案例2:日志分级输出(颜色+前缀)
为了更高效地区分不同严重程度的日志信息,为各类日志添加对应的颜色和图形前缀。
from aesthetic_text import aesthetic_text as at
import time
def log(msg, level="info"):
# 配置各日志级别的颜色与符号前缀
level_config = {
"info": ("green", "?? "),
"warning": ("yellow", "?? "),
"error": ("red", "? "),
"success": ("green", "? ")
}
fg_color, prefix = level_config.get(level, ("white", "???? "))
# 组合时间戳、级别和消息内容
log_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
log_msg = f"[{log_time}] [{level.upper()}] {msg}"
# 应用样式装饰
return at.decorate(
log_msg,
prefix=prefix,
fg_color=fg_color,
bold=True
)
# 实际调用示例
print(log("数据库连接成功", "success"))
print(log("内存使用率超过80%", "warning"))
print(log("文件读取失败:找不到路径", "error"))
输出效果:成功日志以绿色显示并带对勾前缀,警告为黄色加感叹号,错误则为红色配叉号,视觉上层次分明,便于快速识别问题类型。
aesthetic-text
案例3:Markdown报告标题美化
用于自动生成结构化文档,通过对各级标题添加装饰符号和居中排版,增强报告的美观性和可读性。
from aesthetic_text import aesthetic_text as at
def generate_markdown_title(title, level=1):
"""根据层级生成对应的美化标题(支持# 至 ######)"""
# 不同层级对应不同装饰符号
decorators = ["★", "■", "●", "▲", "◆", "◇"]
decor = decorators[level - 1]
# 居中并对标题前后添加装饰
decorated_title = at.decorate(
title,
align="center",
prefix=decor * 3 + " ",
suffix=" " + decor * 3,
fg_color=None # Markdown不渲染颜色,仅保留符号
)
# 返回标准Markdown格式字符串
return f"{'#' * level} {decorated_title}\n"
# 构建销售报告目录结构
report = ""
report += generate_markdown_title("2024年Q3销售报告", level=1)
report += generate_markdown_title("区域销售数据", level=2)
report += generate_markdown_title("华东地区详情", level=3)
# 写入文件
with open("sales_report.md", "w", encoding="utf-8") as f:
f.write(report)
最终生成的Markdown文件中,每个标题均被居中显示,前后配有与层级对应的装饰符号,使文档结构更加醒目且富有设计感。
coloramadef show_progress(progress): """显示进度条,范围为0到100""" total_length = 50 # 进度条的总长度 filled_length = int(total_length * progress / 100) # 填充已完成部分(绿色)和未完成部分(灰色) filled = at.decorate("─" * filled_length, fg_color="green", bold=True) empty = at.decorate("─" * (total_length - filled_length), fg_color="gray") progress_bar = f"[{filled}{empty}] {progress}%" # 将提示信息与进度条居中对齐显示 return at.decorate( f"任务执行中...\n{progress_bar}", align="center", width=60 ) # 模拟进度更新过程 for p in range(0, 101, 10): print("\033c", end="") print(show_progress(p)) time.sleep(0.5)
效果说明:
在终端中居中展示动态进度条,已完成部分以绿色实线呈现并随进度递增,剩余部分为灰色,视觉清晰直观。
案例5:多行文本添加边框(用于代码块美化)
目标是为一段多行代码增加虚线边框及背景色,模拟终端中常见的代码块样式,提升可读性与美观度。
from aesthetic_text import aesthetic_text as at
code = """def calculate_sum(a, b):
\"\"\"计算两数之和\"\"\"
return a + b
result = calculate_sum(10, 20)
print(f"10 + 20 = {result}")"""
# 使用浅灰背景、深灰文字,并添加虚线边框
beautified_code = at.add_border(
at.decorate(code, bg_color="#F5F5F5", fg_color="#333333"),
border_type="dashed",
border_color="gray",
padding=1,
title="Python Code",
title_align="left"
)
print(beautified_code)
aesthetic-text
效果说明:
代码区域被灰色虚线边框包围,整体背景为浅灰色,上方左侧标注“Python Code”作为标题,结构分明,适合文档或演示场景。
案例6:RGB颜色渐变文案(适用于社交平台发布)
设计一段从蓝色过渡到绿色的文字内容,常用于朋友圈、微博等社交媒体中的个性化文案展示。
social_text = at.color_gradient(
"今日份小确幸:阳光+咖啡+代码~",
start_color=(0, 128, 255),
end_color=(0, 255, 128),
gradient_type="linear"
)
final_text = at.decorate(
social_text,
prefix="???? ",
suffix=" ????",
align="center"
)
print(final_text)
colorama
效果说明:
文字呈现出由蓝至绿的平滑线性渐变,前后配有植物类符号装饰,整体居中排版。若终端支持ANSI色彩渲染,可直接复制粘贴至社交平台使用。
案例7:数据统计卡片(结合多种边框与对齐方式)
构建三个并列的数据展示卡片,分别呈现用户数量、订单总量和营收金额,通过不同颜色与边框进行区分,增强可视化效果。
def create_stat_card(title, value, color):
"""生成带样式的统计信息卡片"""
card_content = at.decorate(title, align="center", fg_color=color) + "\n"
card_content += at.decorate(value, align="center", fg_color=color, bold=True, font_size="large")
return at.add_border(
card_content,
border_type="solid",
border_color=color,
padding=1
)
pip
实现逻辑:
- 每张卡片包含一个居中的标题和加粗放大的数值。
- 使用实线边框包裹内容,并根据类别设定不同的主色调。
- 通过统一内边距(padding)保证内容呼吸感,整体布局协调。
该方案适用于命令行下的数据概览输出,如运维监控、自动化报告等场景。
在处理文本美化与终端输出时,常涉及样式渲染、颜色控制及格式调整。以下是对常见使用场景的优化实现与问题应对方案。
案例8:TXT文件内容美化(批量处理)
需求描述:读取原始纯文本文件,并为其添加圆角边框、背景色和文字颜色,生成视觉更友好的新文件。
from aesthetic_text import aesthetic_text as at
def beautify_txt(input_path, output_path):
# 读取原始文本内容
with open(input_path, "r", encoding="utf-8") as f:
raw_text = f.read()
# 对文本进行装饰处理:左对齐、浅蓝背景、深蓝文字
decorated = at.decorate(
raw_text,
align="left",
bg_color="#E6F7FF",
fg_color="#1890FF",
fill_char=" "
)
# 添加圆角边框,蓝色边线,内边距为2
beautified_text = at.add_border(
decorated,
border_type="rounded",
border_color="#1890FF",
padding=2
)
# 将美化后带ANSI格式的内容写入新文件
with open(output_path, "w", encoding="utf-8") as f:
f.write(beautified_text)
# 执行美化操作
beautify_txt("input.txt", "output.txt")
print("TXT文件美化完成!")
效果说明:生成的 output.txt 文件中,文本被蓝色圆角边框包围,背景呈浅蓝,文字为深蓝色。需使用支持 ANSI 转义码的编辑器(如 VS Code 或 Sublime Text)查看才能呈现完整视觉效果。
fg_color
生成统计信息卡片(三列并排显示)
通过自定义函数 create_stat_card 创建具有不同颜色边框的状态卡片,并在终端中横向排列展示关键数据指标。
# 设置每张卡片宽度
width = 20
# 创建三个风格一致但颜色不同的统计卡片
card1 = create_stat_card("总用户数", "12,580", "blue")
card2 = create_stat_card("季度订单", "3,721", "green")
card3 = create_stat_card("总营收(元)", "896,500", "orange")
# 在终端以空格分隔方式并列输出三张卡片
print(f"{card1} {card2} {card3}")
效果展示:终端中显示三个带有实线边框的卡片,分别采用蓝色、绿色和橙色作为主题色,内容居中排列,数值部分加粗突出,便于快速识别核心数据。
bg_color
常见问题及其解决方案
1. Windows 终端无法显示颜色
现象:尽管设置了颜色参数,但命令行界面未呈现预期色彩。
原因分析:Windows 自带的 CMD 或 PowerShell 默认不解析 ANSI 转义序列。
解决方法:引入 colorama 库进行跨平台兼容适配。
pip install colorama
在脚本起始处初始化 colorama:
from colorama import init
init(autoreset=True) # 自动清除后续输出的颜色残留
colorama
2. 多行文本边框错乱或断裂
现象:添加边框后出现线条不对齐、断开等问题。
原因分析:源文本包含换行符或制表符等特殊字符;width 参数设定过小,导致换行或填充不足。
解决方案:
- 手动设置足够大的
width值(例如 80),确保容纳最长行; - 将文本中的制表符
\t替换为空格; - 保证所有行长度不超过
width - 2(预留边框两侧空间)。
\n
width
\t
width
\t
width - 2*padding - 2
3. 颜色参数报错(Invalid color format)
现象:程序运行时报出颜色格式非法错误。
原因分析:提供的颜色值不符合规范,如 HEX 编码位数错误、RGB 数值越界或颜色名称不被支持。
修正建议:
- HEX 颜色必须为六位格式,例如
#1890FF,而非#189FF; - RGB 元组中每个值应在 0–255 范围内,如
(30, 144, 255),不可用(300, 0, 0); - 使用库所支持的标准颜色名称,如
red、blue,避免使用非标准词汇如pinkish。
ValueError: Invalid color format
#FF0000
#FF00
(255, 0, 0)
(300, -10, 0)
red
blue
deepred
4. 文本对齐设置无效
现象:即使设置了居中对齐,实际显示仍靠左。
原因分析:未显式指定容器宽度,或设定的宽度小于文本本身长度。
解决策略:明确设置 width 参数,且其值应大于最长文本行的字符数(如设为 50),系统会自动用空白字符补全以实现正确对齐。
align="center"
width
width=50
使用注意事项汇总
终端兼容性
Linux 和 macOS 系统下的终端原生支持 ANSI 颜色指令,而 Windows 用户需安装 colorama 才能正常渲染。此外,某些老旧终端可能不支持斜体、闪烁或渐变等高级样式,建议在目标环境中先行测试。
colorama
文件写入相关提醒
经美化后的文本嵌入了 ANSI 控制码,在普通记事本中打开会出现乱码。推荐使用具备 ANSI 解析能力的编辑器(如 VS Code、Sublime Text)查看结果文件,以获得准确视觉呈现。
性能考量
启用复杂样式(如渐变色、双线边框)会导致文本体积显著增加。当处理大规模数据(如十万行以上日志)时,可能带来内存压力与处理延迟。因此建议仅对重点信息(标题、摘要、异常记录)进行美化,避免全文应用。
自定义符号使用限制
若需替换边框或填充字符(如使用“★”、“─”),应优先选择单个 Unicode 字符。多字符组合易引发布局错位或宽度计算偏差,影响整体排版稳定性。
prefix
suffix
fill_char
编码问题
务必确保输入输出文件均采用 UTF-8 编码,防止中文或其他多字节字符出现乱码或截断现象。读写文件时应显式声明 encoding="utf-8" 参数。
在处理中文文本时,务必确保文件读写过程中明确指定编码格式,以防止出现乱码问题。
《动手学PyTorch建模与应用:从深度学习到大模型》是一本面向初学者的PyTorch实战教程,涵盖从深度学习基础到大模型开发的完整路径。全书共11章,前六章系统讲解张量操作、神经网络基本原理、数据预处理方法以及卷积神经网络等内容,夯实理论基础;后五章则深入探讨图像、文本和音频领域的建模技术,并结合Transformer架构解析大语言模型的实际开发流程。
书中通过房价预测、图像分类等实际案例,逐步演示模型构建过程,每章均配备动手练习题,强化读者的实践能力。内容设计兼顾数学原理与工程实现,紧跟PyTorch框架的技术演进,适合希望掌握深度学习与大模型应用的开发者阅读与学习。
总结:
该工具是一款轻量级且易于使用的文本美化库,提供简洁的API接口,支持边框、颜色、渐变等多种视觉效果,显著提升终端输出的可读性与美观度。适用于日志系统、命令行工具、报告生成等场景,同时具备高度可配置性,满足多样化定制需求。使用时需注意终端环境的兼容性及参数的正确格式,避免常见错误,从而高效实现文本样式优化。
aesthetic-text
encoding="utf-8"

雷达卡


京公网安备 11010802022788号







