Python使用termcolor打印彩色文本仅显示ANSI转义码如何解决
问题产生原因
termcolor的着色原理是在文本前后拼接ANSI控制转义序列,其中\x1b[34m代表开启蓝色显示,\x1b[0m代表重置所有文本样式。仅当运行代码的终端环境支持ANSI转义序列解析时,这些特殊序列才会被识别为样式控制指令,不会直接输出。
你看到原始转义字符打印,本质是运行环境不支持ANSI转义解析导致的,常见场景包括:
- 旧版Windows默认的cmd、PowerShell终端(Win10之前版本默认未开启VT100支持,部分Win10/11版本也可能默认关闭该特性)
- PyCharm、VS Code等IDE的内置终端未开启ANSI颜色支持
- 代码输出目标为文件、管道等非终端TTY设备
解决方法
Windows原生终端场景
- 方案1:安装
colorama库做兼容性适配,安装完成后仅需在代码开头添加两行初始化代码,原有termcolor相关逻辑无需修改即可生效:
import colorama colorama.init() from termcolor import colored print(colored("hello", "blue"))
- 方案2:将默认终端替换为Windows Terminal,该终端默认原生支持ANSI转义序列,直接运行原有代码即可正常显示蓝色文本。
IDE内置终端场景
- PyCharm:打开设置→工具→终端,勾选「使用终端中的ANSI颜色输出」,重启内置终端后重新运行代码即可。
- VS Code:打开设置页搜索
terminal.integrated.enableANSI,勾选该选项后重启终端即可生效。
输出到非TTY设备需保留颜色的场景
可以给colored方法添加force_color=True参数,强制输出完整的ANSI转义序列:
print(colored("hello", "blue", force_color=True))
内容的提问来源于stack exchange,提问作者Gon
相关产品推荐
相关产品推荐

