Python让你的终端输出变得五彩斑斓
前言
也许你希望在终端上输出一些带有颜色或者粗体、下划线等样式的信息,就像man中的那样;
又或者海量的信息堆砌在控制台导致各种信息都显示在一起,让人抓不住重点,或者使用python处理文档文件的时候,希望能看到一些中重点语句。
这时候,如果能给重要的信息加上差异的字体颜色,那么就会更加显眼,增加使用者可阅读性。
本文来简单介绍一下如何实现在终端变换颜色。
Linux下终端变换颜色
linux和windows平台修改终端显示颜色的方式是不一样的,当然其实也有通用的方法,这个在本文最后会讲。
先说一下Linux平台的方法,使用转义序列来实现不同颜色的显示。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。而终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
它的格式如下:
\033[显示方式;前景色;背景色m
其中显示方式,前景色,背景色参数如下:
前景色 | 背景色 | 颜色 | 显示方式 | 意义 |
---|---|---|---|---|
30 | 40 | 黑色 | 0 | 终端默认设置 |
31 | 41 | 红色 | 1 | 粗体 高亮显示 |
32 | 42 | 绿色 | 22 | 非粗体 非高亮显示 |
33 | 43 | 黃色 | 4 | 使用下划线 |
34 | 44 | 蓝色 | 24 | 去下划线 |
35 | 45 | 紫红色 | 5 | 闪烁 |
36 | 46 | 青蓝色 | 25 | 去闪烁 |
37 | 47 | 白色 | 7 | 反白显示 |
27 | 非反显 | |||
8 | 不可见 | |||
28 | 可见 |
前景色后景色可以不设置,显示方式也可以不设置(默认为0)
print('\033[0;31;1m' )
print('*' * 50)
print('*HOST:\t', 2019)
print('*URI:\t', 'http://127.0.0.1')
print('*TIME:\t', '20:58')
print('*' * 50)
print('\033[0m')
输出结果如下:
测试文件如下:
# 格式:\033[显示方式;前景色;背景色m
# 说明:
#
# 前景色 背景色 颜色
# ---------------------------------------
# 30 40 黑色
# 31 41 红色
# 32 42 绿色
# 33 43 黃色
# 34 44 蓝色
# 35 45 紫红色
# 36 46 青蓝色
# 37 47 白色
#
# 显示方式 意义
# -------------------------
# 0 终端默认设置
# 1 高亮显示
# 4 使用下划线
# 5 闪烁
# 7 反白显示
# 8 不可见
#
# 例子:
# \033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->
# \033[0m <!--采用终端默认设置,即取消颜色设置-->]]]
STYLE = {
'fore':
{
# 前景色
'black' : 30, # 黑色
'red' : 31, # 红色
'green' : 32, # 绿色
'yellow' : 33, # 黄色
'blue' : 34, # 蓝色
'purple' : 35, # 紫红色
'cyan' : 36, # 青蓝色
'white' : 37, # 白色
},
'back' :
{
# 背景
'black' : 40, # 黑色
'red' : 41, # 红色
'green' : 42, # 绿色
'yellow' : 43, # 黄色
'blue' : 44, # 蓝色
'purple' : 45, # 紫红色
'cyan' : 46, # 青蓝色
'white' : 47, # 白色
},
'mode' :
{
# 显示模式
'mormal' : 0, # 终端默认设置
'bold' : 1, # 高亮显示
'underline' : 4, # 使用下划线
'blink' : 5, # 闪烁
'invert' : 7, # 反白显示
'hide' : 8, # 不可见
},
'default' :
{
'end' : 0,
},
}
def UseStyle(string, mode = '', fore = '', back = ''):
mode = '%s' % STYLE[