用Python写出会“说话”的字体?我发现了个宝藏库,太上头了!

用Python写出会“说话”的字体?我发现了个宝藏库,太上头了!

嗨,我是花姐 ,一个专门在深夜敲代码、白天喝咖啡写技术文章的 Python 狂热爱好者。

说个事,前阵子我在写一个命令行工具的时候,想着搞点花里胡哨的效果,不然看着太素,太正经,太没意思了……然后我一头扎进了各种ASCII艺术库,最后被一个叫 pyfiglet 的库迷得五迷三道的。

这玩意是真的有意思!用它,你可以让终端里的文字变得巨有个性,有那种“你一眼就知道我不是普通Python程序”的感觉,骚气中透着一种拽。

今天我就带你搞懂她!


pyfiglet是个啥?能吃吗?

不瞒你说,我第一次看到这个名字的时候,还以为是啥吃的东西(有点像“炸鸡汉堡星人”的那种单词)。其实它全名是:Python FIGlet

你可能又要问了,那 FIGlet 又是啥?

来点小科普:
FIGlet 是一个老古董程序(1980年代的那种),它的作用是——把普通文字转成 ASCII 艺术字。

比如你输入 “huajie”,它就能整出像这样的效果

 _                  _ _      
| |__  _   _  __ _ (_|_) ___ 
| '_ \| | | |/ _` || | |/ _ \
| | | | |_| | (_| || | |  __/
|_| |_|\__,_|\__,_|/ |_|\___|
                 |__/        

是不是有那味儿了?有种一秒回到 DOS 时代的错觉~
pyfiglet 就是它的 Python 版本。


pyfiglet怎么玩?上手真的很快

别的库可能要安装一大堆依赖,配置一堆环境,但 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。


那它到底能用来干啥?

别以为这玩意只能拿来“花里胡哨”,我亲测了几个实用场景:

  1. 命令行工具的欢迎界面
    打开程序看到一行艺术字“欢迎使用花姐工具箱”,是不是立刻提升一个档次?

  2. 控制台小游戏
    比如写个猜数字小游戏,结尾显示 “YOU WIN!” 用 ASCII 字体出来,氛围直接拉满

  3. 写脚本给自己发通知
    定时任务执行完,打印“任务完成 ✅”,花点样式更醒目

  4. 代码整蛊(别太过分哈)
    有次我帮朋友修了个 bug,结果把他的欢迎信息改成了巨大一行“BUG IS BACK”,结果他一开终端差点吓掉手机


哪些点容易搞错?别踩雷

讲真,pyfiglet 用着不难,但有几个地方容易卡住:

中文不支持!

这个库只支持英文字符

我当时还傻乎乎地在那儿敲“你好”,结果啥也没出来,我还以为代码写错了:

print(pyfiglet.figlet_format("你好"))

输出:


解决办法?没办法,只能自己转拼音或者用英文短语来替代。


终端宽度不够

有些字体横向很长,输出一大片,如果你终端窗口太窄,会被截断,看着像乱码。

解决方法:把窗口拉宽一点就好了,或者用短点的词。


想加点颜色?pyfiglet 自己不带的

你可能想问:我想让这些 ASCII 字体变成彩色的可以吗?

当然可以!但得搭配别的库用,比如 termcolorcolorama

例子来了:

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"))

多跑几次,你会发现自己根本停不下来……


写在最后,花姐唠叨几句:

这个库说大不大,说小也不小。虽然只是文字美化,但背后代表的是一种对用户体验的在意,一种让脚本变得更“有人情味”的方式。

很多时候,我们写代码时太专注逻辑,忘了“好看”和“好用”一样重要。

程序员也可以浪漫一点嘛~

你可能感兴趣的:(python)