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找到了一些其他的色码源。我有两个问题。
- 像
BOLD = '3[1m'
这样的代码是什么意思(模式意思)?
- 我们可以 convert/use 终端中的任何十六进制颜色代码吗?
颜色源有限,我们可以在终端中使用任何十六进制代码吗?
您在这里处理 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 |
我们可以在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找到了一些其他的色码源。我有两个问题。
- 像
BOLD = '3[1m'
这样的代码是什么意思(模式意思)? - 我们可以 convert/use 终端中的任何十六进制颜色代码吗? 颜色源有限,我们可以在终端中使用任何十六进制代码吗?
您在这里处理 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 |