首页Python【Python计算生态】p...

【Python计算生态】pyfiglet——ASCII艺术生成库

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

pyfiglet是一个Python第三方库,用于将普通文本转换为ASCII艺术字(类似Figlet工具的效果)。它可以通过不同的字体风格生成炫酷的终端文字,适用于命令行工具、日志装饰或趣味项目。
可以通过 pip 安装:
pip install pyfiglet

02
使用

使用pyfiglet有以下两种方式:

  • 使用pyfiglet作为命令行工具:
作为命令行工具时,pyfiglet的功能与原始的C语言编写的figlet工具类似,支持大多数相同的选项。可以直接在终端中运行它。
使用pyfiglet时,最常用的选项是-f–font,用于指定字体文件,默认字体是standard.flf
例如,要在命令行中使用pyfiglet,可以运行以下命令:
pyfiglet -f slant "Hello, World!"
这条命令会使用slant字体渲染文本“Hello, World!”
运行以下命令,将会显示支持的选项及其说明的完整列表:
pyfiglet --help
  • 使用pyfiglet作为Python库:
pyfiglet也可以作为Python库集成到Python脚本中,允许以编程方式生成ASCII艺术文字,这对于在应用程序中创建动态文本输出非常有用。
可以使用Figlet类或figlet_format函数渲染文本,并通过各种字体和自定义选项来实现个性化输出。
from pyfiglet import Figlet

# 创建一个指定字体的Figlet对象
f = Figlet(font='slant')

# 渲染文本
print(f.renderText('Hello, World!'))
import pyfiglet

# 使用特定字体渲染文本
result = pyfiglet.figlet_format("Hello, World!", font="slant")
print(result)

03
参数

可以通过参数来自定义输出样式,包括文本颜色、对齐方式、行宽等。
  • 字体:

pyfiglet 提供了多种字体(如slant,block,bubble等),可以使用下述语句来获取所有可用的字体名称。

from pyfiglet import Figlet

# 列出所有字体
fonts = Figlet().getFonts()
print(fonts)

使用时,可以通过font参数指定字体(也可以使用自定义字体文件路径创建自定义字体样式):

# 使用特定字体:
result = pyfiglet.figlet_format("Hello, World!", font="block")
print(result)
# 输出:
_|    _|            _|  _|                
_|    _|    _|_|    _|  _|    _|_|        
_|_|_|_|  _|_|_|_|  _|  _|  _|    _|      
_|    _|  _|        _|  _|  _|    _|      
_|    _|    _|_|_|  _|  _|    _|_|    _|  
                                    _|    
                                          
                                                      
_|          _|                      _|        _|  _|  
_|          _|    _|_|    _|  _|_|  _|    _|_|_|  _|  
_|    _|    _|  _|    _|  _|_|      _|  _|    _|  _|  
  _|  _|  _|    _|    _|  _|        _|  _|    _|      
    _|  _|        _|_|    _|        _|    _|_|_|  _|  
                                


  • 输出宽度:

通过 width 参数来设置生成的 ASCII 艺术的宽度。

# 添加 width 参数限制行宽:
result = pyfiglet.figlet_format("Hello, World!", font="slant", width=60)
print(result)
# 输出:
    __  __     ____     
   / / / /__  / / /___  
  / /_/ / _ / / / __  
 / __  /  __/ / / /_/ / 
/_/ /_/___/_/_/____( )
                     |/ 
 _       __           __    ____
| |     / /___  _____/ /___/ / /
| | /| / / __ / ___/ / __  / / 
| |/ |/ / /_/ / /  / / /_/ /_/  
|__/|__/____/_/  /_/__,_(_)   
                                


  • 对齐方式:

通过 justify 参数调整对齐(left, center, right)。

# 通过 justify 参数调整对齐
result = pyfiglet.figlet_format("Hello, World!", width=50, justify="center")
print(result)
# 输出:
              _   _      _ _        
             | | | | ___| | | ___   
             | |_| |/ _ | |/ _  
             |  _  |  __/ | | (_) | 
             |_| |_|___|_|_|___( )
                                 |/ 
         __        __         _     _ _ 
               / /__  _ __| | __| | |
          / / / _ | '__| |/ _` | |
            V  V / (_) | |  | | (_| |_|
            _/_/ ___/|_|  |_|__,_(_)
                                        


  • 结合termcolor库输出彩色艺术字:

可以结合 termcolor 库为艺术字添加颜色:
from termcolor import colored

# 使用特定字体渲染文本
result = pyfiglet.figlet_format("Hello, World!", font="slant")

# 为输出添加颜色
colored_result = colored(result, 'red')
print(colored_result)
# 输出:
    __  __     ____           _       __           __    ____
   / / / /__  / / /___       | |     / /___  _____/ /___/ / /
  / /_/ / _ / / / __      | | /| / / __ / ___/ / __  / / 
 / __  /  __/ / / /_/ /      | |/ |/ / /_/ / /  / / /_/ /_/  
/_/ /_/___/_/_/____( )     |__/|__/____/_/  /_/__,_(_)   
                     |/                                      
                                        

为艺术字添加颜色,termcolor库只是一个选择,还可以使用rich库或者直接用HTML/CSS包裹文本等一些方式完成。

# 使用 rich 库
from rich import print

# 生成 ASCII 艺术字
figlet = pyfiglet.Figlet(font='slant')
art = figlet.renderText('Hello, World!')

# 直接使用 rich 的语法添加颜色
print(f"[red]{art}[/red]")                                    
# 纯 HTML/CSS 着色
import pyfiglet
from IPython.display import HTML

# 生成 ASCII 艺术字
figlet = pyfiglet.Figlet(font='slant')
art = figlet.renderText('Hello, World!')

# 用 HTML/CSS 包裹文本
html_art = f'<pre style="color: red; font-family: monospace">{art}</pre>'
HTML(html_art)


更多内容可以前往GitHub查看:

https://github.com/pwaller/pyfiglet

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments