Python中,控制终端文本颜色的常见用法和具体说明【增加输出美观度】
首先先观察如下代码:
print('\033[91m' + '-' * 60 + '\033[0m') # 91m对应红色,92m对应绿色 print(' ' * 20 + '\033[92mBruce is the best!' + '\033[0m') print('\033[31m' + '-' * 60 + '\033[0m') # '\033[0m':重置所有终端样式(颜色、粗体等),确保后续输出不受红色影响。
乍一看,除了第二行代码的中间部分能够看懂一些,仿佛是在打印字符串。
其他代码看上去非常奇怪,那这代码到底是有何作用?
直接看打印结果即可马上理解。

这段代码使用 ANSI 转义码来控制终端文本颜色,具体是将 60 个 - 字符以某种颜色(这里是红色,\033[91m)打印为分隔线,并通过 \033[0m 重置颜色以避免影响后续输出。我将:
接下来
- 我将列举所有常见的 ANSI 颜色代码及其输出效果。
- 并提供一个更美观的代码示例,展示不同颜色的分隔线。【加深大家直观感受】
ANSI 转义码支持多种前景色(文本颜色)和背景色。以下是常见的 前景色 代码(适用于类似 \033[XXm 的格式),我将列出标准颜色和亮色变体,并描述其输出效果。
标准前景色(30-37)
| 代码 | 颜色 | 描述 |
|---|---|---|
| \033[30m | 黑色 | 深黑色,暗环境可能难见 |
| \033[31m | 红色 | 标准红色,醒目 |
| \033[32m | 绿色 | 标准绿色,清新 |
| \033[33m | 黄色 | 标准黄色,温暖 |
| \033[34m | 蓝色 | 标准蓝色,冷静 |
| \033[35m | 紫色 | 标准紫色(洋红色),优雅 |
| \033[36m | 青色 | 标准青色,鲜亮 |
| \033[37m | 白色 | 浅灰色或白色,干净 |
亮前景色(90-97,高强度)
| 代码 | 颜色 | 描述 |
|---|---|---|
| \033[90m | 亮黑色 | 深灰色,较黑色更可见 |
| \033[91m | 亮红色 | 鲜艳红色,更明亮 |
| \033[92m | 亮绿色 | 鲜艳绿色,生动 |
| \033[93m | 亮黄色 | 鲜艳黄色,非常醒目 |
| \033[94m | 亮蓝色 | 鲜艳蓝色,清新 |
| \033[95m | 亮紫色 | 鲜艳紫色(亮洋红),华丽 |
| \033[96m | 亮青色 | 鲜艳青色,耀眼 |
| \033[97m | 亮白色 | 纯白色,极亮 |
重置代码
| 代码 | 作用 | 描述 |
|---|---|---|
| \033[0m | 重置样式 | 恢复终端默认颜色和样式 |
注意:
- 实际颜色效果取决于终端的配色方案(例如,黑色背景或白色背景)。
- 一些终端(如 Windows CMD)默认不支持 ANSI 码,可能需要 colorama 库或启用虚拟终端支持。
3. 更美观的代码示例
为了展示所有常见颜色的分隔线,并增加代码美观性,我将:
- 定义一个函数,打印不同颜色的分隔线。
- 使用字典存储颜色代码和名称,便于管理和扩展。
- 添加居中提示文本,增强视觉效果。
- 确保代码结构清晰,注释明确。
以下是改进后的代码:
def print_colored_separator(color_code, color_name, length=60, message=None): """ 打印带有指定颜色的分隔线,并可选地显示居中消息。 参数: color_code (str): ANSI 颜色代码(如 '\033[91m')。 color_name (str): 颜色名称,用于提示信息。 length (int): 分隔线长度,默认为 60。 message (str): 可选的居中消息文本。 """ reset_code = '\033[0m' # 重置样式 separator = '-' * length # 打印分隔线 print(f'{color_code}{separator}{reset_code}') # 如果有消息,居中打印 if message: padding = ' ' * ((length - len(message)) // 2) print(f'{padding}{color_code}{message}{reset_code}') # 打印分隔线 print(f'{color_code}{separator}{reset_code}\n') # 定义常见颜色代码和名称 colors = { 'Black': '\033[30m', 'Red': '\033[31m', 'Green': '\033[32m', 'Yellow': '\033[33m', 'Blue': '\033[34m', 'Purple': '\033[35m', 'Cyan': '\033[36m', 'White': '\033[37m', 'Bright Black': '\033[90m', 'Bright Red': '\033[91m', 'Bright Green': '\033[92m', 'Bright Yellow': '\033[93m', 'Bright Blue': '\033[94m', 'Bright Purple': '\033[95m', 'Bright Cyan': '\033[96m', 'Bright White': '\033[97m' } # 打印所有颜色的分隔线 for color_name, color_code in colors.items(): print_colored_separator( color_code=color_code, color_name=color_name, message=f'{color_name} Separator' )
4. 输出效果
运行上述代码(假设终端支持 ANSI 颜色)将生成以下输出(pycharm实际终端会显示对应颜色):


5. 代码美观性改进说明
- 模块化:
- 定义了 print_colored_separator 函数,封装分隔线打印逻辑,便于复用。
- 参数化 color_code、color_name、length 和 message,增加灵活性。
- 结构清晰:
- 使用字典 colors 组织颜色代码和名称,易于维护和扩展。
- 添加详细的函数文档字符串,说明参数和功能。
- 视觉增强:
- 每种颜色显示两次分隔线,中间夹杂居中消息(如 “Red Separator”),使输出更美观。
- 消息居中对齐(通过计算填充空格),提升对称性。
- 每组分隔线后添加换行符(\n),分隔不同颜色。
- 可扩展性:
- 可以轻松添加其他 ANSI 样式(如背景色 \033[41m 或粗体 \033[1m)。
- 支持自定义分隔线长度和消息内容。
6. 注意事项
- 终端兼容性:
- ANSI 转义码在 Linux、macOS 终端和大多数现代 IDE 终端(如 VS Code)中默认支持。
- 在 Windows CMD 或旧版 PowerShell 中可能无效。解决方法:
- 使用 colorama 库(pip install colorama):
from colorama import init init() # 初始化 colorama
或在 Windows 10+ 启用虚拟终端支持。
- 颜色可见性:
- 某些颜色(如黑色 \033[30m)在暗色终端背景上可能难以看到。
- 亮色(如 \033[91m)通常更醒目,适合强调。
- 跨平台考虑:
- 如果需要跨平台兼容,可以检测终端是否支持 ANSI 码,或提供无颜色的回退选项。
7. 扩展:添加背景色
如果想展示背景色,可以扩展 colors 字典,添加背景色代码(40-47 为标准背景色,100-107 为亮背景色)。示例:
colors.update({ 'Red Background': '\033[41m', 'Green Background': '\033[42m', 'Yellow Background': '\033[43m' })
输出效果会是分隔线带有彩色背景(如红色背景的 - 字符)。
总结
- 原始代码使用 \033[91m 打印红色分隔线,结合 \033[0m 重置样式。
- 我列出了 16 种常见前景色(8 种标准色 + 8 种亮色),并描述了其效果。
- 提供了一个美观的代码示例,通过函数化和居中消息增强视觉效果,展示了所有颜色的分隔线。
- 输出效果在支持 ANSI 的终端中为彩色分隔线,适用于日志、调试或界面美化。

浙公网安备 33010602011771号