使用 ANSI 转义序列输出彩色文本

使用 ANSI 转义序列输出彩色文本

  • 什么是 ANSI 转义序列?
  • 常见的颜色码
    • 前景色/文字颜色(Foreground color):
    • 背景色(Background color):
  • Python 实例
    • 基本用法
    • 封装成函数
    • 高级用法:彩色日志
  • 其他语言实例
    • C 语言
  • 总结

我们编程时所使用的文本编辑器(Vim, Visual Studio Code, …)或者 IDE(PyCharm, Visual Studio, …)都允许我们根据自己的喜好选择和配置语法高亮,这可以提高代码的可读性,但程序运行时的输出信息通常没有颜色。如果我们用不同颜色的输出来区分不同类型的信息,这样就可以更加清晰地看到程序的运行状态,发生错误时也能快速定位问题。

例如在日志系统中我们可以:

  • 用红色输出错误信息,方便快速定位问题;
  • 用黄色输出警告信息,提醒用户注意;
  • 用绿色输出成功信息,表示任务完成或成功。

什么是 ANSI 转义序列?

终端(Terminal)是我们与操作系统交互的重要工具,而 ANSI 转义序列(ANSI Escape Sequences)则是控制终端行为的指令集合。

控制终端颜色的 ANSI 转义序列是一串类似这样的字符: "\033[37;44mHello, World!\033[0m",其中:

  • \033[ 是 ANSI 转义序列的开始符;
    • \033 其实是 ESC 的八进制 ASCII 码
  • 37 是设置前景色为白色的代码;
  • ; 是颜色码的分隔符;
  • 44 是设置背景色为蓝色的代码;
  • m 是转义序列的结束符;
  • Hello, World! 是要输出的文本;
  • \033[0m 是恢复默认颜色的转义序列。

对于支持 ANSI 的终端,我们可以通过这些转义序列,改变文本的颜色、背景色等。

常见的颜色码

前景色/文字颜色(Foreground color):

  • 30: 黑色(Black)
  • 31: 红色(Red)
  • 32: 绿色(Green)
  • 33: 黄色(Yellow)
  • 34: 蓝色(Blue)
  • 35: 洋红色(Magenta)
  • 36: 青色(Cyan)
  • 37: 白色(White)

背景色(Background color):

  • 40: 黑色
  • 41: 红色
  • 42: 绿色
  • 43: 黄色
  • 44: 蓝色
  • 45: 洋红色
  • 46: 青色
  • 47: 白色

Python 实例

在 Python 中,我们可以使用 ANSI 转义序列不依赖于任何第三方库轻松实现输出彩色文本。

基本用法

print('默认颜色')
print('\033[;m默认颜色\033[0m')  # 分号 ; 是可选的
print('\033[31m红色文本\033[0m')
print('\033[33m黄色文本\033[0m')
print('\033[32m绿色文本\033[0m')
print('\033[37;44m蓝底白字\033[0m')
print('\033[30;47m白底黑字\033[0m')

封装成函数

FG_CODE = {
   
    'black': '30',
    'red': '31',
    'green': '32',
    'yellow': '33',
    'blue': '34',
    'magenta': '35'

你可能感兴趣的:(Python,python,程序人生,笔记,经验分享)