Python在Windows控制台打印彩色文本时为何输出颜色代码?
Windows 10下Python打印彩色文本的解决方法
问题说明
在Windows 10(Python 3.10)环境中,执行print('\033[2;31;43m CHEESY')或使用colorama库时,控制台直接输出ANSI颜色代码,无法显示预期的彩色文本。
有效解决方法
开启终端ANSI支持
若使用旧版命令提示符,先执行以下命令开启ANSI转义序列支持,执行后重启终端:reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1推荐直接使用Windows终端(Windows Terminal),默认支持ANSI序列。
正确使用colorama库
- 安装colorama:
pip install colorama - 示例代码:
必须添加from colorama import init, Fore, Back, Style init(convert=True) # 输出暗淡的红前景黄背景文本(对应原示例的2;31;43格式) print(Fore.RED + Back.YELLOW + Style.DIM + 'CHEESY' + Style.RESET_ALL)Style.RESET_ALL重置文本格式,避免影响后续输出。
- 安装colorama:
直接调用Windows API(备选方案)
若上述方法无效,可通过ctypes调用系统API设置颜色:import ctypes # 获取标准输出句柄 STD_OUTPUT_HANDLE = -11 handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) # 设置颜色:前景红(4) + 背景黄(14<<4) + 暗淡属性(8) ctypes.windll.kernel32.SetConsoleTextAttribute(handle, 4 | (14 << 4) | 8) print('CHEESY') # 重置为默认控制台颜色 ctypes.windll.kernel32.SetConsoleTextAttribute(handle, 7)
内容的提问来源于stack exchange,提问作者bakunet
相关产品推荐
相关产品推荐

