"""
ASCII 码的 0-31 和 127 被称为 C0 控制字符
例如 \07 就是 BEL, 响铃 (\0 表示八进制)
其中 \033 (十进制27, 十六进制x1B) 是 ESC, 转义字符, 它可以用于转义序列
如 \033[ 表示序列导入 (Control Sequence Introducer),简写为 CSI
也可写作 \x1b[
两个字节的序列可以合并为 0x80-0x9F 范围内的单个字节, 即 C1 控制字符
所以 \033[ 可以合并为 \x9b
ANSI转义序列中以 ESC [ 开头的叫作 Control Sequence Introducer
大致可分四类:光标移动指令、清屏指令、字符渲染(Graphic Rendition)指令和终端控制指令
例如:\x9bA 是上移 1 格,可以更新一行
例如:\x9bF 可移到上一行开头,加上 \x9b2K 清空行,能让一行重新输出
例如:\x9b2J 可清空屏幕,再加上\x9bH 可让光标移动到第1行第1列
CSI n A 光标上移 1 格
CSI n B 光标下移 1 格
CSI n C 光标左移 1 格
CSI n D 光标右移 1 格
CSI n E 光标下移 n 行,到开头
CSI n F 光标上移 n 行,到开头
CSI n G 光标移到第 n 列
CSI n;m H 光标移到第 n 行 m 列
CSI n J 擦除显示,0从光标到屏幕末尾,1从光标到屏幕开头,2全屏,3全屏并清空缓存
CSI n K 擦除行,0从光标到行末尾,1从光标到行开头,2整行。光标位置不变
CSI s 保存光标位置
CSI u 恢复光标位置
CSI n m 选择图形再现 (SGR), n 的取值范围是 0-107, 一类控制字符显示样式,另一类控制显示颜色
SGR参数列表:
格式:\x9b显示方式;前景色;背景色m
显示方式 意义
-------------------------
0 默认
1 高亮
4 下划线
5 闪烁
7 反显
8 不可见
9 删除线
-------------------------
21 关闭高亮
22 正常颜色
24 关闭下划线
25 关闭闪烁
27 关闭反显
28 关闭隐藏
29 关闭删除线
前景色 背景色 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
38 48 高级配置
39 49 默认颜色
例子:
\x9b1;31;40m 1-高亮显示 31-红色前景 40-黑色背景
\x9b0m 采用终端默认设置,即取消颜色设置
参考:https://blog.csdn.net/ScilogyHunter/article/details/106874395
在 Windows 的 cmd 和 powershell 终端,不支持 CSI,可以用 colorama 的 init() 解决:
import colorama
colorama.init()
"""
dic = {
0: '默认',
1: "加粗或高亮",
3: "斜体",
4: "下划线",
7: "反显",
8: "不可见",
9: "删除线",
30: "黑色前景",
31: "红色前景",
32: "绿色前景",
33: "黃色前景",
34: "蓝色前景",
35: "紫红色前景",
36: "青蓝色前景",
37: "白色前景",
40: "黑色背景",
41: "红色背景",
42: "绿色背景",
43: "黃色背景",
44: "蓝色背景",
45: "紫红色背景",
46: "青蓝色背景",
47: "白色背景",
}
for i in dic:
info = dic[i]
if not info:
continue
print(f'{i:>2d}: \x9b{i}m {info} \x9b0m')
标签:CSI,Python,背景,31,转义序列,ANSI,开头,前景,光标
From: https://www.cnblogs.com/haujet/p/ansi-control-sequence-introducer.html