嗨,我是花姐 ,一个专门在深夜敲代码、白天喝咖啡写技术文章的 Python 狂热爱好者。
说个事,前阵子我在写一个命令行工具的时候,想着搞点花里胡哨的效果,不然看着太素,太正经,太没意思了……然后我一头扎进了各种ASCII艺术库,最后被一个叫 pyfiglet
的库迷得五迷三道的。
这玩意是真的有意思!用它,你可以让终端里的文字变得巨有个性,有那种“你一眼就知道我不是普通Python程序”的感觉,骚气中透着一种拽。
今天我就带你搞懂她!
不瞒你说,我第一次看到这个名字的时候,还以为是啥吃的东西(有点像“炸鸡汉堡星人”的那种单词)。其实它全名是:Python FIGlet。
你可能又要问了,那 FIGlet 又是啥?
来点小科普:
FIGlet 是一个老古董程序(1980年代的那种),它的作用是——把普通文字转成 ASCII 艺术字。
比如你输入 “huajie”,它就能整出像这样的效果
_ _ _
| |__ _ _ __ _ (_|_) ___
| '_ \| | | |/ _` || | |/ _ \
| | | | |_| | (_| || | | __/
|_| |_|\__,_|\__,_|/ |_|\___|
|__/
是不是有那味儿了?有种一秒回到 DOS 时代的错觉~
而 pyfiglet
就是它的 Python 版本。
别的库可能要安装一大堆依赖,配置一堆环境,但 pyfiglet
不一样,它轻得像一片云,干净得像刚装的系统。
一行命令就能搞定:
pip install pyfiglet
装完之后,直接上代码:
import pyfiglet
ascii_art = pyfiglet.figlet_format("Hello, huajie!")
print(ascii_art)
跑一下看看效果,是不是顿时整个终端都洋气了?✨
_ _ _ _ _ _ _ _
| | | | ___| | | ___ | |__ _ _ __ _ (_|_) ___| |
| |_| |/ _ \ | |/ _ \ | '_ \| | | |/ _` || | |/ _ \ |
| _ | __/ | | (_) || | | | |_| | (_| || | | __/_|
|_| |_|\___|_|_|\___( )_| |_|\__,_|\__,_|/ |_|\___(_)
|/ |__/
你再对比下普通的 print("Hello, huajie!")
,是不是有种“我写的是Python Plus”的感觉?
这玩意最迷人的点就是:字体风格多到离谱!
我第一次用的时候,一口气换了十几种风格,还上头了半个小时
来试试下面这段代码,打印所有支持的字体名:
from pyfiglet import Figlet
f = Figlet()
fonts = f.getFonts()
print(fonts)
几十种字体风格随你挑,比如:
from pyfiglet import Figlet
f = Figlet(font='slant')
print(f.renderText("huajie"))
__ _ _
/ /_ __ ______ _ (_|_)__
/ __ \/ / / / __ `/ / / / _ \
/ / / / /_/ / /_/ / / / / __/
/_/ /_/\__,_/\__,_/_/ /_/\___/
/___/
输出看着特别像黑客电影那种开场,酷得一塌糊涂~
小提醒:
别自己硬记字体名,它是区分大小写的,有的还带符号,建议用 getFonts()
列出来 copy。
别以为这玩意只能拿来“花里胡哨”,我亲测了几个实用场景:
命令行工具的欢迎界面
打开程序看到一行艺术字“欢迎使用花姐工具箱”,是不是立刻提升一个档次?
控制台小游戏
比如写个猜数字小游戏,结尾显示 “YOU WIN!” 用 ASCII 字体出来,氛围直接拉满
写脚本给自己发通知
定时任务执行完,打印“任务完成 ✅”,花点样式更醒目
代码整蛊(别太过分哈)
有次我帮朋友修了个 bug,结果把他的欢迎信息改成了巨大一行“BUG IS BACK”,结果他一开终端差点吓掉手机
讲真,pyfiglet
用着不难,但有几个地方容易卡住:
中文不支持!
这个库只支持英文字符
我当时还傻乎乎地在那儿敲“你好”,结果啥也没出来,我还以为代码写错了:
print(pyfiglet.figlet_format("你好"))
输出:
解决办法?没办法,只能自己转拼音或者用英文短语来替代。
终端宽度不够
有些字体横向很长,输出一大片,如果你终端窗口太窄,会被截断,看着像乱码。
解决方法:把窗口拉宽一点就好了,或者用短点的词。
想加点颜色?pyfiglet 自己不带的
你可能想问:我想让这些 ASCII 字体变成彩色的可以吗?
当然可以!但得搭配别的库用,比如 termcolor
或 colorama
。
例子来了:
from pyfiglet import figlet_format
from termcolor import colored
art = figlet_format("Hello!")
colored_art = colored(art, color="green")
print(colored_art)
绿色的艺术字出现在屏幕上的那一刻,我感觉自己像在玩命令行版QQ秀
你以为这就完了?嘿,还能再花点~
用 random.choice()
,每次输出用不同的字体,感觉像转盘抽奖一样,每敲一次都有惊喜
import pyfiglet
import random
from pyfiglet import Figlet
f = Figlet()
fonts = f.getFonts()
f = pyfiglet.Figlet(font=random.choice(fonts))
print(f.renderText("huajie"))
多跑几次,你会发现自己根本停不下来……
这个库说大不大,说小也不小。虽然只是文字美化,但背后代表的是一种对用户体验的在意,一种让脚本变得更“有人情味”的方式。
很多时候,我们写代码时太专注逻辑,忘了“好看”和“好用”一样重要。
程序员也可以浪漫一点嘛~