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

Python控制台标题着色异常求助:art库无法实现蓝色标题

问题原因

你将ANSI颜色转义序列作为文本内容传入text2art函数,但该函数的作用是把输入的每个字符转换为ASCII艺术字体——它会把颜色代码的转义字符也当成普通字符处理,最终输出的是转义字符对应的艺术块,而非让终端解析颜色指令,因此颜色不生效,还会出现多余的乱码字符。

解决方案

先让text2art生成纯文本的ASCII艺术字,再给整个艺术字内容包裹ANSI颜色代码,终端就能正确解析颜色指令了。

修正后的代码:

from art import *
import ctypes

# 开启Windows控制台的ANSI转义支持(该代码有效,可保留)
kernel32 = ctypes.WinDLL('kernel32')
hStdOut = kernel32.GetStdHandle(-11)
mode = ctypes.c_ulong()
kernel32.GetConsoleMode(hStdOut, ctypes.byref(mode))
mode.value |= 4
kernel32.SetConsoleMode(hStdOut, mode)


class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKCYAN = '\033[96m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

# 先生成纯文本的ASCII艺术字
art_text = text2art("COOL HEADER", font='graffiti', chr_ignore=True)
# 给整个艺术字包裹颜色代码后打印
print(f"{bcolors.OKBLUE}{art_text}{bcolors.ENDC}")
额外说明
  • 若使用Windows Terminal或新版本PowerShell,默认已支持ANSI转义序列,那部分ctypes开启控制台模式的代码可省略,保留也不会有问题。
  • 确保你的终端支持ANSI颜色输出(现代终端如Windows Terminal、PowerShell、Linux/macOS终端均支持)。

内容的提问来源于stack exchange,提问作者Daniel Fraser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:10:51