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

如何在Python中实现类似警告/错误流的红色高亮自定义文本打印?

在stdout中打印红色高亮文本的实现方法

嘿,这个需求我太熟了!要实现像tqdm那样在终端输出红色高亮文本,核心是利用ANSI转义序列,同时要兼顾跨平台兼容性。下面给你几种不同场景下的实现方案:

1. 基础原生实现(无需第三方库)

终端支持ANSI转义码的话(比如Linux/macOS终端、Windows Terminal/PowerShell),直接用颜色控制码包裹文本即可:

  • 红色前景色的起始码:\033[31m
  • 重置回默认样式的码:\033[0m(必须加,不然后续所有文本都会保持红色)

示例代码:

# 打印红色文本,后面恢复默认
print("\033[31m这是高亮的红色文本\033[0m")
# 混合不同样式也可以
print("\033[31m红色\033[0m 和 \033[32m绿色\033[0m 文本")

如果是Windows传统CMD窗口,默认不支持ANSI转义码,需要先启用虚拟终端模式:

import sys

if sys.platform.startswith('win'):
    import ctypes
    # 调用Windows API启用虚拟终端处理
    kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
    handle = kernel32.GetStdHandle(-11)  # STD_OUTPUT_HANDLE
    mode = ctypes.c_ulong()
    kernel32.GetConsoleMode(handle, ctypes.byref(mode))
    mode.value |= 0x0004  # ENABLE_VIRTUAL_TERMINAL_PROCESSING
    kernel32.SetConsoleMode(handle, mode)

# 现在CMD也能显示红色文本了
print("\033[31mWindows CMD下的红色文本\033[0m")

2. 用第三方库简化操作(推荐)

如果不想自己处理跨平台逻辑,可以用成熟的终端颜色库,比如colorama或termcolor:

方案A:colorama

它专门解决Windows平台的ANSI码兼容问题,使用非常简洁:

pip install colorama

示例代码:

from colorama import init, Fore

# init(autoreset=True) 会自动重置颜色,不用手动加重置码
init(autoreset=True)

print(Fore.RED + "这是用colorama输出的红色文本")
# 还支持背景色
print(Fore.WHITE + Back.RED + "白色字体红色背景")

方案B:termcolor

更轻量的库,直接通过函数调用指定颜色:

pip install termcolor

示例代码:

from termcolor import colored

print(colored("这是用termcolor输出的红色文本", 'red'))
# 可选添加样式,比如加粗
print(colored("红色加粗文本", 'red', attrs=['bold']))

3. 模拟tqdm的错误/警告流红色输出

如果你想像tqdm那样在stderr中输出红色文本,方法和stdout一致,只是输出目标换成sys.stderr:

import sys

# 原生方式
sys.stderr.write("\033[31m这是stderr中的红色警告文本\033[0m\n")

# 用colorama的话
from colorama import init, Fore
init(autoreset=True)
sys.stderr.write(Fore.RED + "stderr中的红色警告(colorama版)\n")

这些方法都能完美实现你要的红色高亮打印需求,根据自己的场景选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:42:53