You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在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内部函数名可能有差异,需根据实际源码调整。

二、控制台内容通用居中技巧

  1. 动态获取终端宽度:用shutil.get_terminal_size().columns获取当前终端的宽度,避免固定值适配问题。
  2. 单行文本居中:直接使用Python字符串的str.center(width)方法,自动填充左右空格。
  3. 多行文本居中:将文本按行拆分,逐行调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:01:01