Python 到终端的彩色文本

Python colored text to the terminal

我们可以在Python的终端中设置彩色文本或前景色文本。我已经完成了这个 SO's answer。一些示例颜色代码在这里

class bcolors:
    HEADER = '3[95m'
    OKBLUE = '3[94m'
    OKCYAN = '3[96m'
    OKGREEN = '3[92m'
    WARNING = '3[93m'
    FAIL = '3[91m'
    ENDC = '3[0m'
    BOLD = '3[1m'
    UNDERLINE = '3[96m'

print(f"{bcolors.OKGREEN}Yes we can set any Hex color in terminal?{bcolors.ENDC}")

一切都很好。但是您可能会注意到我们要设置一些颜色代码。挖驱动后,我从Microsoftdocs找到了一些其他的色码源。我有两个问题。

您在这里处理 ANSI 转义码

全部遵循模式3[XXXm。您可以有多个与此相关的说明,而不仅仅是您列出的那个。

对于终端中的颜色代码,它取决于系统。最基本的终端有一组 8 种不同的颜色:

  • 黑色:\u001b[30m
  • 红色:\u001b[31m
  • 绿色:\u001b[32m
  • 黄色:\u001b[33m
  • 蓝色:\u001b[34m
  • 洋红色:\u001b[35m
  • 青色:\u001b[36m
  • 白色:\u001b[37m
  • 重置:\u001b[0m

ANSI Escape Codes

ANSI 转义码允许您在终端中做很多漂亮的事情。可以更改字体颜色、字体样式(粗体、斜体、下划线等...),也可以移动光标覆盖之前的文字,让文字动态变化。

建筑规范

基本上,代码是这样构建的:

3[XXXm

其中 XXX 是一系列以分号分隔的参数。

  • 它们以 3[(或上面指定的任何代码 + [)
  • 开头
  • 然后,包含由 ;
  • 分隔的任意数量的整数
  • 它们以 m
  • 结尾

仅包含 0(即 \x1B[0m)的代码将重置字体的任何样式 属性。

大多数情况下,您会打印一段更改终端样式的代码,然后打印某个字符串,然后是重置代码。

您可以使用以下代码更改字体颜色或背景颜色。

| Color                                  | Font code        | Background code  |
|----------------------------------------|------------------|------------------|
| Black                                  | \x1B[30m         | \x1B[40m         |
| Red                                    | \x1B[31m         | \x1B[41m         |
| Green                                  | \x1B[32m         | \x1B[42m         |
| Yellow                                 | \x1B[33m         | \x1B[43m         |
| Blue                                   | \x1B[34m         | \x1B[44m         |
| Magenta                                | \x1B[35m         | \x1B[45m         |
| Cyan                                   | \x1B[36m         | \x1B[46m         |
| White                                  | \x1B[37m         | \x1B[47m         |
| Any palette color (with V in [0-255])  | \x1B[38;5;Vm     | \x1B[48;5;Vm     |
| Any RGB color (with values in [0-255]) | \x1B[38;2;R;G;Bm | \x1B[48;2;R;G;Bm |