it编程 > 前端脚本 > Python

Python使用pyfiglet库实现把文字变成ASCII艺术字

2人参与 2026-09-21 Python

摘要:使用 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-d3d 横幅
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

设计要点

  1. figlet 实例创建并复用:渲染文本时不再重建对象,避免无谓开销
  2. set_font() 抽取统一的字体设置入口:字体校验、回退、figlet 重建三件事放在同一处,构造函数与后续切换字体共用,避免逻辑重复或遗漏
  3. 字体校验前置:pyfigletfiglet(font=font) 构造时即校验字体名,字体不存在会直接抛 fontnotfound——因此校验必须在 figlet(...) 之前用 if font not in figlet().getfonts() 完成
  4. generate()print_art() 分离:前者返回字符串(便于复用/写文件),后者直接打印(便于调试)
  5. 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 种经过筛选的好用字体,作为遍历顺序和默认推荐集。

六、常见运用场景

七、完整可运行文件

将 demo.py 保存后运行:

python demo.py

输出会依次展示 pythonjenkinstoolspytest 各自在不同种字体下的艺术字。

八、小结

能力调用方式
一句话出图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艺术字内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Python中输入输出全指南:从print/input到文件读写与IO避坑

09-21

Anaconda环境pip报错'Unable to create process'的完整解决指南

09-21

基于Python制作下发用的Excel受保护模板

09-21

使用Python实现按卷内目录拆分PDF归档册

09-21

Python实现Word与RTF文档格式互转详解

09-20

VSCode中配置Python环境与运行Hello World的保姆级教程

09-20

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论