Python彩色文字输出到终端

4
我们可以在Python终端中设置文本颜色或前景色。我已经阅读了这篇SO的答案(链接)。以下是一些示例颜色代码。
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKCYAN = '\033[96m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[96m'

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

一切都好。但是您可能会注意到我们有一些颜色代码需要设置。在找了很多资料后,我从Microsoft文档中找到了一些其他的颜色代码源。我有两个问题:

  • BOLD = '\033[1m'这样的代码是什么意思(表示什么)?
  • 我们可以在终端中转换 / 使用任何十六进制颜色代码吗?由于颜色源受限,因此我们可以在终端中使用任何十六进制代码吗?

维基百科有一篇非常优秀的文章。就我个人而言,我经常参考这个页面。它还提供了转义序列和颜色信息。 - S3DEV
2个回答

4

ANSI转义码

ANSI转义码允许您在终端上执行许多美丽的操作。您可以更改字体的颜色、字体样式(粗体、斜体、下划线等),还可以将光标移动到以覆盖先前的文本,使文本动态更改。

建立代码

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

\033[XXXm

XXX 是一系列由分号分隔的参数。

  • 它们以 \033[(或者上述指定代码之一加上 [)开头
  • 然后,它们包含任意数量的由分号分隔的整数
  • 最后以 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 |

1
你这里正在处理 ANSI 转义代码
所有遵循模式\033[XXXm。 与您列出的不止一个相关的指令。
对于终端中的颜色代码,它取决于系统。 最基本的终端有8种不同的颜色集:
  • 黑色:\u001b [30m
  • 红色:\u001b [31m
  • 绿色:\u001b [32m
  • 黄色:\u001b [33m
  • 蓝色:\u001b [34m
  • 品红色:\u001b [35m
  • 青色:\u001b [36m
  • 白色:\u001b [37m
  • 重置:\u001b [0m

已经找到了固定点,但我正在寻找另一种设置十六进制颜色的方法。 - mhhabib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接