Python ASCII艺术字——pyfiglet

简介


FIGlet 是一种生成各种类型的文本的程序,例如用较小的 ASCII 字符组成

pyfiglet 是一款 Python 实现的 figlet

在线生成




安装

pip install pyfiglet




初试

from pyfiglet import Figlet

f = Figlet(font='slant')
print(f.renderText('Hello World!'))

效果

    __  __     ____         _       __           __    ____
   / / / /__  / / /___     | |     / /___  _____/ /___/ / /
  / /_/ / _ \/ / / __ \    | | /| / / __ \/ ___/ / __  / / 
 / __  /  __/ / / /_/ /    | |/ |/ / /_/ / /  / / /_/ /_/  
/_/ /_/\___/_/_/\____/     |__/|__/\____/_/  /_/\__,_(_)   




获取所有字体

from pyfiglet import FigletFont

print(FigletFont().getFonts())




安装字体

安装

pyfiglet -L <font file>

内置 Figlet 字体不支持中文




Linux

安装

sudo apt update
sudo apt install figlet
sudo apt install toilet

字体示例

字体库

.flf.flc 字体放在 /usr/share/figlet

查看可用字体

showfigfonts
figlist

命令

figlet XerCis
echo 'Hello, World!' | figlet
figlet -f big 'XerCis'
toilet XerCis

效果

__  __          ____ _
\ \/ /___ _ __ / ___(_)___
 \  // _ \ '__| |   | / __|
 /  \  __/ |  | |___| \__ \
/_/\_\___|_|   \____|_|___/

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

__   __          _____ _
\ \ / /         / ____(_)
 \ V / ___ _ __| |     _ ___
  > < / _ \ '__| |    | / __|
 / . \  __/ |  | |____| \__ \
/_/ \_\___|_|   \_____|_|___/


 m    m                 mmm    "
  #  #   mmm    m mm  m"   " mmm     mmm
   ##   #"  #   #"  " #        #    #   "
  m""m  #""""   #     #        #     """m
 m"  "m "#mm"   #      "mmm" mm#mm  "mmm"

酷炫时钟

watch -n 1 "date '+%D%n%T' | figlet -k"




中文

下载并安装中文字体

这三个理论上支持中文,但本人尝试失败

git clone https://github.com/cmatsuoka/figlet-fonts.git
cd figlet-fonts/cjkfonts
pyfiglet -L cns.flf
pyfiglet -L gb16fs.flf
pyfiglet -L gb16st.flf




封装

1. 打印所有艺术字

from pyfiglet import Figlet, FigletFont


def show_all(text='Hello World!'):
    for font in FigletFont().getFonts():
        print('【{}】'.format(font))
        print(Figlet(font).renderText(text))


show_all()




参考文献

  1. pyfiglet GitHub
  2. 有趣的pyfiglet
  3. Python控制台输出艺术字
  4. cmatsuoka/figlet-fonts GitHub
  5. xero/figlet-fonts GitHub
  6. 酷炫的文字工具——Figlet用法
  7. Produce Fancy Text With Figlet
  8. Linux终端也能玩出新境界:Figlet 和 Toilet命令
  9. Figlet 和 Toilet命令用法
  10. oeasy教您玩转linux010206toilet
  11. figlet 中文支持
### Python 控制台输出彩色文方法 在 Python 中,有多种方式可以实现在控制台上输出带有颜色的文。以下是几种常见的实现方法: #### 使用 ANSI 转义序列 ANSI 转义序列是一种标准的符编码方案,允许通过特定的转义码来设置体颜色、背景颜色以及其他样式属性。下面是一个简单的例子展示如何使用 ANSI 转义序列实现彩色输出。 ```python def colored_print(): yellow_text = '\x1b[1;33;40m' + 'Yellow Color Print' + '\x1b[0m' print(yellow_text) normal_text = 'Normal Print' print(normal_text) green_text = '\033[0;32;40m' + 'Green Color Print' + '\033[0m' print(green_text) if __name__ == '__main__': colored_print() ``` 这种方法适用于支持 ANSI 的终端环境,但在 Windows 上可能需要额外配置才能正常工作[^1]。 #### 使用 `colorama` 模块 为了简化跨平台兼容性问题,特别是针对 Windows 平台上的 ANSI 支持不足的情况,推荐使用第三方库 `colorama` 来处理彩色输出。安装该模块后,可以通过其提供的接口轻松定义并应用不同的颜色风格。 ```python from colorama import init, Fore, Back, Style init(autoreset=True) # 初始化并自动重置颜色状态 print(Fore.RED + "This is red text.") print(Back.GREEN + "This has a green background.") print(Style.BRIGHT + "Bright style applied here.") ``` 此方法不仅提高了代码可读性和维护便利性,还解决了部分操作系统对于原始 ANSI 序列的支持局限性[^2]。 #### 自定义函数调整颜色 除了依赖外部工具外,也可以基于底层 API 编写自己的解决方案来自由操控窗口句柄以改变文本呈现形式。例如利用 Windows 提供的标准输入/输出设备操作接口完成类似功能。 ```python import ctypes STD_OUTPUT_HANDLE = -11 FOREGROUND_BLUE = 0x0001 FOREGROUND_GREEN = 0x0002 FOREGROUND_RED = 0x0004 def set_cmd_text_color(color, handle=None): if not handle: handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) bool_result = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return bool_result set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) # Reset to white set_cmd_text_color(FOREGROUND_RED) # Set to red print("Red Text") set_cmd_text_color(FOREGROUND_GREEN) # Change back to green print("Green Text") ``` 上述脚本仅限于运行于微软视窗系列的操作系统之上;其他类型的计算机会因为缺乏相应的 DLL 文件而无法执行这些调用语句[^4]。 #### 利用 `pyfiglet` 创建艺术化彩绘符串 如果希望进一步提升视觉效果,则可以考虑引入另一个名为 PyFiglet 的扩展包,它能将普通的母组合转换成更具创意性的图案表现形式,并且同样支持多色调渲染选项。 ```python from pyfiglet import figlet_format from termcolor import colored ascii_art = figlet_format("Hello", font="slant") # Choose any available typeface name. colored_ascii = colored(ascii_art, "blue") print(colored_ascii) ``` 这里需要注意的是,虽然最终产物看起来更加吸引眼球,但是生成过程相对复杂一些,而且可能会占用更多资源开销[^5]。 --- ### 总结 综上所述,开发者可以根据实际需求选择合适的手段达成目标——无论是追求简洁高效的原生指令集还是倾向于灵活强大的专用框架都可以找到满意的答案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XerCis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值