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

如何在CMD中用Python输出彩色高亮文本(无需第三方库)

在CMD中实现Python文本彩色高亮(无需第三方库)

问题场景

在Windows CMD中运行以下Python代码时,ANSI转义字符未被解析,直接显示为原始字符,无法实现文本彩色高亮效果:

原代码

def highlight(colour, text):
    if colour == "black":
        return "\033[1;40m" + str(text) + "\033[1;m"
    if colour == "red":
        return "\033[1;41m" + str(text) + "\033[1;m"
    if colour == "green":
        return "\033[1;42m" + str(text) + "\033[1;m"
    if colour == "yellow":
        return "\033[1;43m" + str(text) + "\033[1;m"
    if colour == "blue":
        return "\033[1;44m" + str(text) + "\033[1;m"
    if colour == "magenta":
        return "\033[1;45m" + str(text) + "\033[1;m"
    if colour == "cyan":
        return "\033[1;46m" + str(text) + "\033[1;m"
    if colour == "gray":
        return "\033[1;47m" + str(text) + "\033[1;m"
    return str(text)

print(highlight("black", "Highlight: black"))
print(highlight("red", "Highlight: red"))
print(highlight("green", "Highlight: green"))
print(highlight("yellow", "Highlight: yellow"))
print(highlight("blue", "Highlight: blue"))
print(highlight("magenta", "Highlight: magenta"))
print(highlight("cyan", "Highlight: cyan"))
print(highlight("gray", "Highlight: gray"))

错误输出

←[1;40mHighlight: black←[1;m
←[1;41mHighlight: red←[1;m
←[1;42mHighlight: green←[1;m
←[1;43mHighlight: yellow←[1;m
←[1;44mHighlight: blue←[1;m
←[1;45mHighlight: magenta←[1;m
←[1;46mHighlight: cyan←[1;m
←[1;47mHighlight: gray←[1;m

解决方法

方法1:启用CMD的ANSI转义支持

Windows 10 1511及以上版本的CMD原生支持ANSI转义序列,但默认可能未启用。只需在代码开头添加一行系统命令即可触发解析支持:

import os
# 启用CMD的ANSI转义解析
os.system('')

def highlight(colour, text):
    if colour == "black":
        return "\033[1;40m" + str(text) + "\033[1;m"
    if colour == "red":
        return "\033[1;41m" + str(text) + "\033[1;m"
    if colour == "green":
        return "\033[1;42m" + str(text) + "\033[1;m"
    if colour == "yellow":
        return "\033[1;43m" + str(text) + "\033[1;m"
    if colour == "blue":
        return "\033[1;44m" + str(text) + "\033[1;m"
    if colour == "magenta":
        return "\033[1;45m" + str(text) + "\033[1;m"
    if colour == "cyan":
        return "\033[1;46m" + str(text) + "\033[1;m"
    if colour == "gray":
        return "\033[1;47m" + str(text) + "\033[1;m"
    return str(text)

print(highlight("black", "Highlight: black"))
print(highlight("red", "Highlight: red"))
print(highlight("green", "Highlight: green"))
print(highlight("yellow", "Highlight: yellow"))
print(highlight("blue", "Highlight: blue"))
print(highlight("magenta", "Highlight: magenta"))
print(highlight("cyan", "Highlight: cyan"))
print(highlight("gray", "Highlight: gray"))

方法2:调用Windows API直接设置颜色(兼容性更好)

使用Python内置的ctypes库调用Windows控制台API,无需依赖ANSI转义字符,兼容性覆盖更多Windows版本:

import ctypes

# 定义控制台前景色常量
FOREGROUND_BLACK = 0x00
FOREGROUND_RED = 0x04
FOREGROUND_GREEN = 0x02
FOREGROUND_YELLOW = 0x06  # 红+绿
FOREGROUND_BLUE = 0x01
FOREGROUND_MAGENTA = 0x05  # 红+蓝
FOREGROUND_CYAN = 0x03     # 绿+蓝
FOREGROUND_GRAY = 0x07     # 红+绿+蓝(浅灰)
FOREGROUND_WHITE = 0x0F    # 高亮白

# 获取标准输出控制台句柄
std_out_handle = ctypes.windll.kernel32.GetStdHandle(-11)

def set_console_color(color):
    ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color)

def highlight(colour, text):
    color_map = {
        "black": FOREGROUND_BLACK,
        "red": FOREGROUND_RED,
        "green": FOREGROUND_GREEN,
        "yellow": FOREGROUND_YELLOW,
        "blue": FOREGROUND_BLUE,
        "magenta": FOREGROUND_MAGENTA,
        "cyan": FOREGROUND_CYAN,
        "gray": FOREGROUND_GRAY
    }
    # 设置指定颜色
    set_console_color(color_map.get(colour, FOREGROUND_WHITE))
    print(text)
    # 恢复默认白色
    set_console_color(FOREGROUND_WHITE)

highlight("black", "Highlight: black")
highlight("red", "Highlight: red")
highlight("green", "Highlight: green")
highlight("yellow", "Highlight: yellow")
highlight("blue", "Highlight: blue")
highlight("magenta", "Highlight: magenta")
highlight("cyan", "Highlight: cyan")
highlight("gray", "Highlight: gray")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:35:59