首页 > 编程语言 >Python 输出简单彩色字符【ANSI 转义序列笔记】

Python 输出简单彩色字符【ANSI 转义序列笔记】

时间:2023-05-12 21:24:08浏览次数:53  
标签:CSI Python 背景 31 转义序列 ANSI 开头 前景 光标

"""
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

相关文章

  • Python
    Python变量变量命名规则变量名必须以字母或下划线字符开头变量名称不能以数字开头变量名只能包含字母数字字符和下划线(A-z、0-9和_)变量名称区分大小写(age、Age和AGE是三个不同的变量)变量赋值切片法:x,y,z="Orange","Banana","Cherry"多个变量名同时赋值:x=......
  • Python中的for循环
    在Python中,for循环用于遍历序列(列表、元组、字符串等)或其他可迭代对象中的元素。for循环的语法如下:for变量in序列:执行代码块其中,变量是用于存储序列中当前元素的变量名,序列是要遍历的序列,代码块是要执行的操作。代码块必须缩进,通常使用四个空格缩进。下面是一个遍历列表......
  • 编程语言与Python介绍题
    计算机存储单位1024bytes=1KB  1024KB=1MB 1024MB=1GB 1024GB=1TB(10.24程序员节日)编程语言的发展史1.机器语言:计算机内部只认识01二进制数据。优点:执行效率高,缺点:学习难度大、跨平台性差2.汇编语言:用一个英文字母来表示一串二进制 优点:执行效率高,缺点:开发效率低,跨平......
  • Python通过GeoIP获取IP信息(国家、城市、经纬度等)
    前言IP地址信息是非常重要的情报信息,通过IP可以定位到该IP所在的国家、城市、经纬度等。获取IP信息的方式有很多,很多服务商都提供了相应的地址库或API接口服务。如国内的ipip.net,国外的ip-api.com、maxmind.com等。很多公司都是使用Maxmind网站的IP信息库,里面包含着IP的详细信息,......
  • Python 执行 Shell命令
    方法一:os.system() os.system()可以说是最为基本的运行shell命令的方式了,这个方法的特点就是直接运行命令,并将运行之后的状态值返回码返回,所以结果是一个int类型,这个方式比较常见是运用在只需要执行shell命令而不需要得到命令的返回结果的场景。比如执行一个创建目录的......
  • day02 编程语言与Python介绍
    昨日总结回顾第二节编程语言与Python介绍【一】引言基于上一节所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序。【二】编程语言分类【1】机器语言(1.1)什么是机器语言机器......
  • 水果识别系统python
    介绍水果识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。效果展示演示视频和源码视频+代码:http......
  • 在python3.7+中优雅的使用dataclass
    [本文出自天外归云的博客园]在Python3.7+中,dataclasses是一个非常优雅的工具,可以轻松地创建简单的类,并自动生成常见的类方法,比如 __init__、__repr__ 等。以下是一些使用dataclasses时需要注意的事项:导入dataclasses模块在使用dataclasses之前,需要先导入datacla......
  • python进阶-虚拟环境
    python两个模块:os:Thismoduleprovidesaportablewayofusingoperatingsystemdependentfunctionality.这个模块提供了一种方便的使用操作系统函数的方法。sys:Thismoduleprovidesaccesstosomevariablesusedormaintainedbytheinterpreterandtofunction......
  • Python 文件大小(Byte)可读性转化(KB、MB、GB、TB)
    Python文件大小可读性转化file_size_exchange.py#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2023/5/1217:52#@Software:PyCharm__author__="JentZhang"KB=1024MB=KB*KBGB=MB*KBTB=GB*KBdefformat_byte_repr(byte_num):&q......