📅  最后修改于: 2020-05-09 11:33:30             🧑  作者: Mango
本文演示了如何使用Python编程语言在Linux终端中打印格式化的文本 。
与纯文本相反, 格式化文本 (也称为样式文本或RTF文本 )具有样式信息,例如:
在Linux终端中, ANSI转义码(或转义序列)用于控制格式,颜色和其他输出选项。
为了对该格式设置信息进行编码,某些字节序列被嵌入到文本中 ,终端会查找并解释为命令并执行它们。
让我们看一个通过简单的Python打印语句打印格式化文本的基本示例!
print ( '\x1b[3;31;43m' + 'Hello world!' + '\x1b[0m' )
如果在Linux Terminal上运行此代码,则将获得如下输出:
如您所见,输出具有:
现在,让我们尝试理解上述print语句中使用的ANSI转义代码的含义。
\x1b[3;31;43m
该代码的一般语法为:
\x1b[A;B;C
值 | 样式 |
---|---|
1个 | 粗体 |
2 | faint |
3 | 斜体 |
4 | underline |
5 | blinking |
6 | 快速闪烁 |
7 | 相反 |
8 | 隐藏 |
9 | 删除线 |
B(用于文字) | C(用于背景) | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 品红 |
36 | 46 | 青色 |
37 | 47 | 白色 |
\x1b[0m
这是用于将颜色/样式更改重置为默认值的代码。
现在,我们用Python创建一个类来系统地实现所需的格式!
# 用于在终端上打印格式化文本的Python类定义。
# 像这样初始化TextFormatter对象:
# >>> cprint = TextFormatter()
#
# 使用.cfg方法配置格式样式:
# >>> cprint.cfg('r', 'y', 'i')
# Argument 1: 前景(文字)颜色
# Argument 2: 背景颜色
# Argument 3: 文字样式
#
# 使用.out方法打印格式化的文本:
# >>> cprint.out("Hello, world!")
#
# 使用.reset方法重置为默认设置:
# >>> cprint.reset()
class TextFormatter:
COLORCODE = {
'k' : 0 , # black
'r' : 1 , # red
'g' : 2 , # green
'y' : 3 , # yellow
'b' : 4 , # blue
'm' : 5 , # magenta
'c' : 6 , # cyan
'w' : 7 # white
}
FORMATCODE = {
'b' : 1 , # bold
'f' : 2 , # faint
'i' : 3 , # italic
'u' : 4 , # underline
'x' : 5 , # blinking
'y' : 6 , # fast blinking
'r' : 7 , # reverse
'h' : 8 , # hide
's' : 9 , # strikethrough
}
# 建设者
def __init__( self ):
self .reset()
# 重置属性的功能
def reset( self ):
#属性作为字典
self .prop = { 'st' : None , 'fg' : None , 'bg' : None }
return self
# 用于配置属性的函数
def cfg( self , fg, bg = None , st = None ):
# 重置并设置所有属性
return self .reset().st(st).fg(fg).bg(bg)
# 设定文字样式
def st( self , st):
if st in self .FORMATCODE.keys():
self .prop[ 'st' ] = self .FORMATCODE[st]
return self
# 设置前景色
def fg( self , fg):
if fg in self .COLORCODE.keys():
self .prop[ 'fg' ] = 30 + self .COLORCODE[fg]
return self
# 设置背景色
def bg( self ,bg):
if bg in self .COLORCODE.keys():
self .prop[ 'bg' ] = 40 + self .COLORCODE[bg]
return self
# 格式化函数
def format ( self , string):
w = [ self .prop[ 'st' ], self .prop[ 'fg' ], self .prop[ 'bg' ]]
w = [ if x not for w x is str (x)
# 返回格式化的字符串
return '\x1b[%sm%s\x1b[0m' % ( ';' .join(w), string)
# 输出格式化的字符串
def out( self , string):
print ( self . format (string))
这是我们的文本格式化程序的类定义。
为了使用它,请将上面的Python脚本另存为TextFormatter.py,并在存储此文件的同一文件夹中打开终端。
然后,通过终端运行Python解释器并导入TextFormatter 。
这里,
from TextFormatter import TextFormatter
cprint = TextFormatter()
cprint.cfg('y', 'g', 'b')
cprint.out("Hello, world!")
因此,现在,您可以轻松地在终端上打印样式化的文本!