Termcolor与PowerShell结合使用时无颜色输出问题咨询
解决PowerShell中termcolor无法显示颜色的问题
我之前在PowerShell里用termcolor时也踩过这个坑!主要原因是PowerShell对ANSI颜色转义码的支持需要手动开启,再加上你代码里还有个小坑,一起给你解决掉:
1. 开启PowerShell的ANSI转义码支持
termcolor是靠输出ANSI转义序列来实现颜色的,但旧版PowerShell默认不识别这些代码。按你的PowerShell版本来操作:
- PowerShell 5.1及以下:
先执行这个注册表修改命令,然后重启PowerShell:Set-ItemProperty HKCU:\Console VirtualTerminalLevel -Type DWORD 1 - PowerShell 7+:
默认已经支持,但如果还是没颜色,建议换成Windows Terminal(微软官方的新终端),它对ANSI支持更完善。也可以先检查一下:
返回$Host.UI.RawUI.SupportsVirtualTerminalTrue才说明支持虚拟终端。
2. 修复代码里的变量名冲突
看你的代码,你把colored函数的返回值赋值给了同名变量colored,这会覆盖原来的函数,虽然不一定直接导致颜色不显示,但会让后续代码出问题。修改一下变量名:
import pyfiglet from termcolor import colored msg = input('what do you want to print : ') color = input('what color: ') asc = pyfiglet.figlet_format(msg) # 把变量名改成colored_asc,避免覆盖函数 colored_asc = colored(asc, color=color) print(colored_asc)
3. 先测试基础颜色输出
如果上面两步做完还是没颜色,先跑一段极简代码排查问题:
from termcolor import colored print(colored("测试颜色", "red"))
如果这段代码能显示红色,那说明是pyfiglet的输出可能有特殊字符干扰,你可以试试用pyfiglet.figlet_format(msg, font="standard")指定基础字体再测试;如果还是没颜色,那大概率是终端的ANSI支持没开到位。
内容的提问来源于stack exchange,提问作者user3183762
相关产品推荐
相关产品推荐

