2人参与 • 2026-09-21 • Python
摘要:使用 python pyfiglet 库,用 rendertext() 一行将文本渲染为 ascii 艺术字,封装成类管理字体、异常回退与字体列举,并给出多字体遍历示例。
你有没有过这样的瞬间:打开终端启动 cli 时,满屏字符拼出的 welcome 突然撞进眼里;点开某个开源项目的源码文件,开头用字符堆叠出的 openapi 标识又猝不及防地跳出来。那些看似普通的字母与符号,在开发者手里变成了藏在代码里的专属彩蛋,成了技术世界里一种心照不宣的极客浪漫。
你是否也动过念头,想亲手用一个个字符拼出属于自己的那一份浪漫?可真正上手才发现——字符排得歪歪扭扭、比例怎么调都不对劲,折腾半天总差点意思。
其实根本不用自己一个个敲字符硬拼。python 的 pyfiglet 库,只需一行 rendertext(),就能把任意文本直接渲染成规整又好看的 ascii 艺术字。你想要的极客浪漫,敲一行代码就能实现。
ascii 艺术字是指用可见 ascii 字符(字母、数字、符号)# / | \ _ . 等排布而成的图形文字,通常在终端、readme、ci 日志中作为标题横幅使用,效果比纯文本酷很多。
例如用 slant 字体渲染 success:
_____ __ __ _____ _____ ___ _____ _____
/ ___/ / / / / / ___/ / ___/ / _ \ / ___/ / ___/
(__ ) / /_/ / / /__ / /__ / __/ (__ ) (__ )
/____/ \__,_/ \___/ \___/ \___/ /____/ /____/
pyfiglet 是经典工具 figlet 的 python 移植版,开箱即用、零外部依赖(纯标准库之外仅需 pyfiglet 一个包)。
pip install pyfiglet
验证安装:
import pyfiglet print(pyfiglet.__version__)
figlet 是核心类,传入 font 构造实例,调用 rendertext(text) 即可得到艺术字字符串:
from pyfiglet import figlet
art = figlet(font="slant").rendertext("pytest")
print(art)
rendertext 返回的是一个普通字符串,包含换行符。你可以打印、写入文件,或嵌入其他输出。
常用字体先记这几个(完整列表见下文 list_fonts):
| 字体 | 风格 |
|---|---|
standard | 经典标准 |
slant | 斜体,有科技感 |
block | 方块风格 |
banner3-d | 3d 横幅 |
doom | 粗犷厚重 |
starwars | 星球大战主题 |
demo 给出一个完整封装,把字体管理、异常回退、字体列举统一管理:
from pyfiglet import figlet
class asciiartgenerator:
"""ascii 艺术字生成器"""
recommended_fonts = [
"standard",
"slant",
"block",
"banner3-d",
"doom",
"epic",
"larry3d",
"isometric1",
"starwars",
"big",
]
def __init__(self, font="slant"):
self.font = font
self.set_font(font)
def set_font(self,font):
"""设置字体"""
if font not in figlet().getfonts():
print(f"[!] 字体 '{font}' 未找到,回退到 standard")
font = "standard"
self.figlet = figlet(font=font)
def generate(self, text: str) -> str:
"""生成 ascii 艺术字"""
return self.figlet.rendertext(text)
def print_art(self, text: str):
"""直接打印 ascii 艺术字"""
art = self.generate(text)
print(art)
@staticmethod
def list_fonts():
"""列出所有可用字体"""
fonts = figlet().getfonts()
print(f"共 {len(fonts)} 种可用字体:\n")
for i, f in enumerate(fonts, 1):
print(f"{i:>4}. {f}")
return fonts
设计要点
figlet 实例创建并复用:渲染文本时不再重建对象,避免无谓开销set_font() 抽取统一的字体设置入口:字体校验、回退、figlet 重建三件事放在同一处,构造函数与后续切换字体共用,避免逻辑重复或遗漏pyfiglet 在 figlet(font=font) 构造时即校验字体名,字体不存在会直接抛 fontnotfound——因此校验必须在 figlet(...) 之前用 if font not in figlet().getfonts() 完成generate() 与 print_art() 分离:前者返回字符串(便于复用/写文件),后者直接打印(便于调试)list_fonts() 为静态方法:不依赖实例状态,返回 fonts 列表,也方便程序化使用(如随机选字体、配合 set_font() 校验)demo 的程序入口对 python / jenkins / tools / pytest 四个词逐个字体渲染:
if __name__ == "__main__":
generator = asciiartgenerator(font="slant")
for key in ['python', 'jenkins', "tools", "pytest"]:
key = ' '.join([i for i in key]) # 字母之间加空格,避免连笔不好看
for font in generator.recommended_fonts:
generator.set_font(font) # 切换字体
generator.print_art(key)
注意 key = ' '.join([i for i in key]):把 python 拆成 p y t h o n。原因是部分字体字形较密,字母连在一起视觉上会糊成一片,显式加空格能显著提升清晰度与排版感。
recommended_fonts 是类级列表,标出 10 种经过筛选的好用字体,作为遍历顺序和默认推荐集。
app readysuccess / build ok,日志可读性和仪式感并存
将 demo.py 保存后运行:
python demo.py
输出会依次展示 python、jenkins、tools、pytest 各自在不同种字体下的艺术字。
| 能力 | 调用方式 |
|---|---|
| 一句话出图 | figlet(font="slant").rendertext("pytest") |
| 封装复用 | asciiartgenerator(font=...).generate(text) |
| 异常回退 | 构造函数内 if font not in figlet().getfonts() 回退 standard |
| 列出字体 | asciiartgenerator.list_fonts() |
| 多字体遍历 | 遍历 recommended_fonts |
pyfiglet 让 ascii 艺术字降到一行代码的成本,配合类封装可在任何需要仪式感的地方直接嵌入。
到此这篇关于python使用pyfiglet库实现把文字变成ascii艺术字的文章就介绍到这了,更多相关python ascii艺术字内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论