核心原理
控制台颜色是基于 ANSI Escape Codes 标准实现的,这些是特殊的字符序列,告诉终端如何改变文本的样式(如颜色、背景、加粗等)。

一个基本的 ANSI 转义序列看起来是这样的:
\033[Code m
\033[是转义字符的开头。Code是一系列由分号 分隔的数字代码,代表不同的样式。m表示结束。
\033[31m:设置文本颜色为红色。\033[0m:重置所有样式。
直接使用 ANSI 转义码(最直接,但繁琐)
这是最基础的方法,你只需要在字符串中插入这些转义码即可。
# \033[31m 是红色,\033[0m 是重置
print("\033[31m这是一段红色的文字\033[0m")
# \033[1m 是加粗,\033[32m 是绿色
print("\033[1m\033[32m这是一段加粗的绿色文字\033[0m")
# 背景色是 44,蓝色
print("\033[44m\033[37m白色文字,蓝色背景\033[0m")
优点:
- 不需要安装任何第三方库。
- 理解了原理,对深入学习有帮助。
缺点:

- 代码可读性差,
\033[...看起来很乱。 - 容易忘记重置颜色,导致后续输出都带上颜色。
- 需要手动管理颜色代码,非常繁琐。
使用 colorama 库(跨平台,推荐初学者使用)
colorama 是一个专门为解决 Windows 控制台颜色问题而生的库,但它同样适用于 Linux 和 macOS,它会自动处理不同平台之间的差异,让你的代码在所有平台上都能正常工作。
安装
pip install colorama
使用方法
colorama 提供了非常直观的 API。
import colorama # 初始化 colorama(非常重要!尤其是在 Windows 上) # auto=True 会自动根据系统选择初始化方式 colorama.init(autoreset=True) # autoreset=True 可以让每次打印后自动重置颜色,非常方便 # Fore, Back, Style 分别代表前景色(文字)、背景色、样式 from colorama import Fore, Back, Style # 前景色 print(Fore.RED + "这段文字是红色的") print(Fore.GREEN + "这段文字是绿色的") print(Fore.BLUE + "这段文字是蓝色的") print(Fore.YELLOW + "这段文字是黄色的") print(Fore.MAGENTA + "这段文字是紫色的") print(Fore.CYAN + "这段文字是青色的") print(Fore.WHITE + "这段文字是白色的") # 背景色 print(Back.RED + "这段文字的背景是红色的") # 样式 print(Style.BRIGHT + "这段文字是高亮的") print(Style.DIM + "这段文字是暗淡的") print(Style.NORMAL + "这段文字是正常的") # 组合使用 print(Fore.YELLOW + Back.BLUE + "黄色文字,蓝色背景" + Style.RESET_ALL) # 注意:因为上面我们设置了 autoreset=True,所以这里可以不加 Style.RESET_ALL
优点:

- 跨平台兼容性极佳,是 Windows 用户的首选。
- 代码非常清晰易读,
Fore.RED比\033[31m直观得多。 init(autoreset=True)功能非常实用,避免了忘记重置的问题。
缺点:
- 需要安装第三方库。
使用 rich 库(功能最强大,推荐用于复杂应用)
rich 是一个功能极其丰富的 Python 库,不仅能轻松实现颜色输出,还能创建漂亮的表格、进度条、Markdown 渲染、语法高亮等,如果你正在开发一个 CLI 工具或需要美观的控制台输出,rich 是不二之选。
安装
pip install rich
使用方法
rich 提供了多种方式,最简单的是 print 函数。
from rich import print
# 直接使用颜色名称作为函数参数
print("[red]这段文字是红色的[/red]")
print("[green]这段文字是绿色的[/green]")
print("[bold]这段文字是加粗的[/bold]")
print("[italic]这段文字是斜体的[/italic]")
# 组合使用,语法类似 HTML
print("[bold red]加粗的红色文字[/bold red]")
print("[yellow on blue]黄色文字,蓝色背景[/yellow on blue]")
# 使用 style 对象(更灵活)
from rich.style import Style
my_style = Style(color="cyan", bold=True, bgcolor="black")
print("这段文字使用了自定义样式", style=my_style)
# 也可以对整个 print 应用样式
print("所有文字都将是绿色的", style="green")
rich 的 print 函数是 Python 内置 print 的超集,所以你可以无缝替换。
优点:
- 功能极其强大,远不止颜色。
- 语法非常简洁、直观,类似 Markdown/HTML。
- 内置对日志记录器的支持,可以轻松为日志添加颜色。
- 性能优秀。
缺点:
- 库相对较大,如果你的需求仅仅是输出几行颜色,可能有点“杀鸡用牛刀”。
使用 termcolor 库(轻量级选择)
termcolor 是一个比较老牌的库,功能简单直接,专注于为终端输出着色。
安装
pip install termcolor
使用方法
from termcolor import colored, cprint
# 使用 colored 函数
red_text = colored("这段文字是红色的", "red")
print(red_text)
green_text = colored("这段文字是绿色的", "green", on_color="on_grey", attrs=["bold"])
print(green_text)
# 使用 cprint 函数(更方便,直接打印)
cprint("直接打印的蓝色文字", "blue")
cprint("带下划线的黄色文字", "yellow", "on_red", attrs=["underline"])
优点:
- 轻量级,API 简单。
- 跨平台支持也不错。
缺点:
- 功能比
colorama和rich少。 - 在某些 Windows 环境下可能不如
colorama稳定。
总结与推荐
| 库名 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| ANSI 码 | 无需安装 | 繁琐、不跨平台、可读性差 | 快速测试、理解原理 |
colorama |
跨平台、简单、易用 | 需要安装 | 日常脚本、初学者、需要跨平台兼容性的项目 |
rich |
功能最强大、语法最优雅、性能好 | 库较大 | CLI 工具、日志美化、复杂控制台应用 |
termcolor |
轻量级、API 简单 | 功能较少,稳定性一般 | 简单的颜色需求,不追求跨平台完美性 |
我的建议:
- 如果你是初学者,或者只是想在脚本里加一点颜色让输出更友好:直接使用
colorama,它简单、可靠,且能解决所有平台的问题。 - 如果你正在开发一个命令行工具,或者对控制台输出的美观度有较高要求:强烈推荐
rich,它会让你事半功倍,并且你的应用会显得非常专业。 - 如果你只是临时写个小脚本,不想安装任何库:可以直接复制粘贴 ANSI 码,但务必记得重置颜色 (
\033[0m)。
