杰瑞科技汇

python console 颜色

核心原理

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

python console 颜色-图1
(图片来源网络,侵删)

一个基本的 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")

优点

  • 不需要安装任何第三方库。
  • 理解了原理,对深入学习有帮助。

缺点

python console 颜色-图2
(图片来源网络,侵删)
  • 代码可读性差,\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

优点

python console 颜色-图3
(图片来源网络,侵删)
  • 跨平台兼容性极佳,是 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")

richprint 函数是 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 简单。
  • 跨平台支持也不错。

缺点

  • 功能比 coloramarich 少。
  • 在某些 Windows 环境下可能不如 colorama 稳定。

总结与推荐

库名 优点 缺点 推荐场景
ANSI 码 无需安装 繁琐、不跨平台、可读性差 快速测试、理解原理
colorama 跨平台、简单、易用 需要安装 日常脚本、初学者、需要跨平台兼容性的项目
rich 功能最强大、语法最优雅、性能好 库较大 CLI 工具、日志美化、复杂控制台应用
termcolor 轻量级、API 简单 功能较少,稳定性一般 简单的颜色需求,不追求跨平台完美性

我的建议:

  • 如果你是初学者,或者只是想在脚本里加一点颜色让输出更友好:直接使用 colorama,它简单、可靠,且能解决所有平台的问题。
  • 如果你正在开发一个命令行工具,或者对控制台输出的美观度有较高要求:强烈推荐 rich,它会让你事半功倍,并且你的应用会显得非常专业。
  • 如果你只是临时写个小脚本,不想安装任何库:可以直接复制粘贴 ANSI 码,但务必记得重置颜色 (\033[0m)。
分享:
扫描分享到社交APP
上一篇
下一篇