能否在Python脚本中调用CLI工具gradient_figlet?求实现方案
解决pyfiglet标题居中彩色渐变及调用gradient_figlet的方法
一、在Python脚本中调用gradient_figlet
gradient_figlet本身是CLI工具,没有提供直接import的Python API,但可以通过两种方式在脚本中实现功能:
方式1:用subprocess调用CLI命令
通过subprocess模块执行gradient_figlet的命令行指令,捕获输出后再处理居中:
# 先确保安装工具 pip install gradient-figlet
import subprocess import shutil def generate_gradient_title(text, font="standard"): # 动态获取终端宽度 term_width = shutil.get_terminal_size().columns # 调用gradient_figlet生成渐变文本 proc = subprocess.run( ["gradient-figlet", "-f", font, text], capture_output=True, text=True ) if proc.returncode != 0: raise ValueError(f"生成失败: {proc.stderr}") # 逐行居中后拼接 centered_lines = [line.center(term_width) for line in proc.stdout.splitlines()] return "\n".join(centered_lines) # 示例使用 if __name__ == "__main__": print(generate_gradient_title("PYTHON", font="slant"))
方式2:直接调用工具内部函数
查看gradient_figlet的源码(通常在Python环境的site-packages/gradient_figlet目录下),找到核心渐变生成逻辑,直接导入调用:
from gradient_figlet.gradient import gradient_text from pyfiglet import Figlet import shutil def gradient_figlet_center(text, font="standard", colors=["#ff0000", "#ffff00", "#00ff00"]): # 用pyfiglet生成基础标题 fig = Figlet(font=font) raw_text = fig.renderText(text) # 添加彩色渐变 gradient_output = gradient_text(raw_text, colors) # 居中处理 term_width = shutil.get_terminal_size().columns return "\n".join([line.center(term_width) for line in gradient_output.splitlines()]) # 示例使用 print(gradient_figlet_center("HELLO WORLD"))
注:不同版本的gradient_figlet内部函数名可能有差异,需根据实际源码调整。
二、控制台内容通用居中技巧
- 动态获取终端宽度:用
shutil.get_terminal_size().columns获取当前终端的宽度,避免固定值适配问题。 - 单行文本居中:直接使用Python字符串的
str.center(width)方法,自动填充左右空格。 - 多行文本居中:将文本按行拆分,逐行调用
center方法后重新拼接:
import shutil def center_multiline(content): term_width = shutil.get_terminal_size().columns return "\n".join([line.center(term_width) for line in content.splitlines()]) # 测试 test_content = """第一行文本 第二行文本 第三行文本""" print(center_multiline(test_content))
内容的提问来源于stack exchange,提问作者KEEP BUSY
相关产品推荐
相关产品推荐

