用 Python 把文字变成ASCII艺术字:开发者的专属极客浪漫
摘要:使用 Python
pyfiglet库,用renderText()一行将文本渲染为 ASCII 艺术字,封装成类管理字体、异常回退与字体列举,并给出多字体遍历示例。
引言:藏在代码里的极客浪漫
你有没有过这样的瞬间:打开终端启动 CLI 时,满屏字符拼出的 WELCOME 突然撞进眼里;点开某个开源项目的源码文件,开头用字符堆叠出的 OpenApi 标识又猝不及防地跳出来。那些看似普通的字母与符号,在开发者手里变成了藏在代码里的专属彩蛋,成了技术世界里一种心照不宣的极客浪漫。
你是否也动过念头,想亲手用一个个字符拼出属于自己的那一份浪漫?可真正上手才发现——字符排得歪歪扭扭、比例怎么调都不对劲,折腾半天总差点意思。
其实根本不用自己一个个敲字符硬拼。Python 的 pyfiglet 库,只需一行 renderText(),就能把任意文本直接渲染成规整又好看的 ASCII 艺术字。你想要的极客浪漫,敲一行代码就能实现。
一、什么是 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
4.1 设计要点
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 种经过筛选的好用字体,作为遍历顺序和默认推荐集。
六、常见运用场景
- 终端启动横幅:程序 / CLI 启动时打印一句艺术字,例如
APP READY - CI/CD 日志:Jenkins、GitHub Actions 跑完打印
SUCCESS/BUILD OK,日志可读性和仪式感并存 - README 头图:README 顶部放一行 ASCII 艺术字作为标题,仓库观感明显提升
- 代码注释 / 模块 banner:文件顶部用 ASCII 字写模块名

七、完整可运行文件
将 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 艺术字降到一行代码的成本,配合类封装可在任何需要仪式感的地方直接嵌入。

浙公网安备 33010602011771号