Python Print 控制输出颜色
Python Print 控制输出颜色
基本语法
在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。
在 Python 中控制 print 输出颜色主要使用 ANSI 转义码 (ANSI Escape Codes)
- 这是跨平台兼容性最好的方法,但在 Windows 系统上可能需要额外处理(例如使用 colorama 库来让 Windows 终端支持 ANSI 码)。
- ANSI 转义码是以
\033[开头的一系列字符,用于设置文本颜色、背景色和样式。 - 最重要的是,在设置颜色后,你需要使用重置码
\033[0m来关闭颜色,否则后续的输出都会保持相同的颜色。
或者使用第三方库 (如 colorama 或 termcolor):
这些库将 ANSI 转义码封装起来,使颜色控制更简单、更具可读性,并提供跨平台兼容性。
ANSI 使用基本格式
1
print('\033[<显示属性>;<前景颜色>;<背景颜色>m + 你的文本 + \033[0m')
其中可自定义的配置项目如下
显示属性配置可选值
| 显示方式 | 显示效果 |
|---|---|
| 0 | 重置/默认 (非常重要,用于关闭所有设置) |
| 1 | 粗体 (Bold) / 高亮 (Bright) |
| 2 | 弱化/低亮度 (Faint) |
| 3 | 斜体 (Italic) |
| 4 | 下划线 (Underline) |
| 5 | 慢速闪烁 (Slow Blink) |
| 7 | 反转/交换前景和背景色 (Reverse) |
| 8 | 隐藏 (Concealed) |
| 9 | 删除线 (Strike-through) |
前景(文本颜色)颜色配置可选值
| 代码 | 颜色 | 示例 |
|---|---|---|
| 标准颜色 (30-37) | ||
| 30 | 黑色 (Black) | \033[30m 文本 \033[0m |
| 31 | 红色 (Red) | \033[31m 文本 \033[0m |
| 32 | 绿色 (Green) | \033[32m 文本 \033[0m |
| 33 | 黄色 (Yellow) | \033[33m 文本 \033[0m |
| 34 | 蓝色 (Blue) | \033[34m 文本 \033[0m |
| 35 | 品红色 (Magenta) | \033[35m 文本 \033[0m |
| 36 | 青色 (Cyan) | \033[36m 文本 \033[0m |
| 37 | 白色/浅灰色 (White) | \033[37m 文本 \033[0m |
| 39 | 默认前景颜色 | \033[39m 文本 \033[0m |
| 高强度/亮色 (90-97) | ||
| 90 | 亮黑色/灰色 (Bright Black) | \033[90m 文本 \033[0m |
| 91 | 亮红色 (Bright Red) | \033[91m 文本 \033[0m |
| 92 | 亮绿色 (Bright Green) | \033[92m 文本 \033[0m |
| 93 | 亮黄色 (Bright Yellow) | \033[93m 文本 \033[0m |
| 94 | 亮蓝色 (Bright Blue) | \033[94m 文本 \033[0m |
| 95 | 亮品红色 (Bright Magenta) | \033[95m 文本 \033[0m |
| 96 | 亮青色 (Bright Cyan) | \033[96m 文本 \033[0m |
| 97 | 亮白色 (Bright White) | \033[97m 文本 \033[0m |
通过设置显示属性代码
1也可以达到类似的高亮效果,但使用这些颜色代码更明确。
背景颜色配置可选值
| 代码 | 颜色 | 示例 |
|---|---|---|
| 标准背景颜色 (40-47) | ||
| 40 | 黑色背景 (Black Background) | \033[40m 文本 \033[0m |
| 41 | 红色背景 (Red Background) | \033[41m 文本 \033[0m |
| 42 | 绿色背景 (Green Background) | \033[42m 文本 \033[0m |
| 43 | 黄色背景 (Yellow Background) | \033[43m 文本 \033[0m |
| 44 | 蓝色背景 (Blue Background) | \033[44m 文本 \033[0m |
| 45 | 品红色背景 (Magenta Background) | \033[45m 文本 \033[0m |
| 46 | 青色背景 (Cyan Background) | \033[46m 文本 \033[0m |
| 47 | 白色/浅灰背景 (White Background) | \033[47m 文本 \033[0m |
| 49 | 默认背景颜色 | \033[49m 文本 \033[0m |
| 高强度/亮色背景 (100-107) | ||
| 100 | 亮黑色/灰背景 | \033[100m 文本 \033[0m |
| 101 | 亮红色背景 | \033[101m 文本 \033[0m |
| 102 | 亮绿色背景 | \033[102m 文本 \033[0m |
| 103 | 亮黄色背景 | \033[103m 文本 \033[0m |
| 104 | 亮蓝色背景 | \033[104m 文本 \033[0m |
| 105 | 亮品红色背景 | \033[105m 文本 \033[0m |
| 106 | 亮青色背景 | \033[106m 文本 \033[0m |
| 107 | 亮白色背景 | \033[107m 文本 \033[0m |
注意: 在 Windows 终端上,如果直接使用 ANSI 码无法显示颜色,你需要导入 colorama 并调用 colorama.init(autoreset=True) 来启用颜色支持。
ANSI 转义码使用案例
实例1:单前景色单点单句标记
1
2
3
4
5
print("\033[31m这是红色字体\033[0m")
print("\033[32m这是绿色字体\033[0m")
print("\033[33m这是黄色字体\033[0m")
print("\033[34m这是蓝色字体\033[0m")
print("\033[38m这是默认字体\033[0m") # 大于37将显示默认字体
实例2:显示方式前景色背景色单点单句标记
1
2
3
4
print("\033[0;31;42m这是默认红色字体背景绿色\033[0m")
print("\033[1;32;43m这是高亮绿色字体背景黄色\033[0m")
print("\033[4;33;45m这是下划线黄色字体背景紫红色\033[0m")
print("\033[5;34;46m这是闪烁蓝色字体背景青蓝色\033[0m")
实例3:综合示例
1
2
3
4
5
6
# 打印红色文本
print('\033[31m这是红色文本\033[0m')
# 打印粗体的绿色文本
print('\033[1;32m这是粗体的绿色文本\033[0m')
# 打印蓝色背景的黄色文本
print('\033[33;44m这是蓝色背景的黄色文本\033[0m')
实例4:多行操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 定义常用的 ANSI 码常量
RESET = '\033[0m'
BOLD = '\033[1m'
YELLOW_TEXT = '\033[93m'
RED_BG = '\033[41m'
# 定义消息内容
line1 = "**********************************"
line2 = "** 重要警告信息 **"
line3 = "** 请立即检查系统日志文件! **"
line4 = "**********************************"
# 构造彩色输出字符串
colored_output = (
# 1. 应用所有样式(粗体 + 亮黄色文本 + 红色背景)
BOLD + YELLOW_TEXT + RED_BG +
# 2. 打印第一行
line1 + '\n' +
# 3. 打印第二行
line2 + '\n' +
# 4. 打印第三行
line3 + '\n' +
# 5. 打印第四行
line4 +
# 6. 重置所有样式
RESET
)
# 打印最终结果
print(colored_output)
在这个例子中:
- 我们通过
BOLD + YELLOW_TEXT + RED_BG一次性设置了所有样式。 - 我们在每行末尾使用标准的换行符
\n。 - 最重要的是,我们在整个字符串的末尾加上了
RESET(\033[0m),这样可以确保在消息块打印结束后,后续的任何print语句都将恢复到终端的默认颜色和样式。
使用 Colorama 库
colorama 是一个流行的库,它使 ANSI 码在 Windows 上的工作变得容易,并且提供了更容易使用的常量
安装方法:
1
pip install colorama
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from colorama import Fore, Back, Style, init
# 自动初始化并设置自动重置(Autoreset),
# 这样每次 print 结束后颜色都会自动重置为默认值。
init(autoreset=True)
# 打印红色文本
print(Fore.RED + '这是红色文本')
# 打印绿色文本,带有亮度的样式
print(Style.BRIGHT + Fore.GREEN + '这是亮绿色文本')
# 打印黄色背景的蓝色文本
print(Fore.BLUE + Back.YELLOW + '这是黄色背景的蓝色文本')
# 可以结合使用,但由于设置了 autoreset=True,所以不需要 Style.RESET_ALL
# 如果不设置 autoreset,则需要手动添加 Style.RESET_ALL
print(Fore.CYAN + '青色文本' + Style.RESET_ALL)
使用 Termcolor 库
termcolor 是另一个简洁的库,它提供了一个简单的函数 colored() 来封装颜色设置。
安装方法:
1
pip install termcolor
示例代码:
1
2
3
4
5
6
7
8
9
10
from termcolor import colored
# 打印红色文本
print(colored('这是红色文本', 'red'))
# 打印粗体的绿色文本
print(colored('这是粗体的绿色文本', 'green', attrs=['bold']))
# 打印蓝色背景的黄色文本
print(colored('这是蓝色背景的黄色文本', 'yellow', 'on_blue'))
参考
本文由作者按照 CC BY 4.0 进行授权