神奇的 \033 ,让打印出彩


  • 我的CSDN主页
  • My Python 学习个人备忘录
  • 我的HOT

Python 好色


  1. \033 打印控制符解析
  2. \033源码控制打印
  3. 调用 color() 控制打印
  4. 在命令行模式下查看 color() 帮助文档
  5. color() 完整源码
  6. \033 VS color()

神奇的 \033 ,让打印出彩_第1张图片




Python 有色打印指令用法示例:

  \033[(打印效果);(前景色);(背景色)m…\033[0m ,“打印效果”“前景色””背景色”三个参数,可以任意缺省,缺省的就用默认值。

Python 打印控制设置可以拆分成三部分理解:

   \033[   打印控制符(不可或缺和写错)
  小写 m   打印设置结束符(同样不可或缺)
   \033[0m   设置打印为默认

神奇的 \033 ,让打印出彩_第2张图片


    “\033[m…\033[0m”

  这个 Python 彩色打印的代码难记且难用,一不注意就是语法错误。还要记住前景色、背景色和效果代码数字,实在不好操作。


回首页

  我在探究之后,码了个函数模块 python_color ,只要在 Python 彩色打印字符串生成函数 color() 参数中除要彩色打印的字符串外,依次以英文单词字符输入“前景色”“背景色”和“效果”即可(除要彩色打印的字符串外,都可以缺省,使用默认值)。真好方便,不用管我的模块函数怎么操作。

我的 color() 在命令行下的调用:

神奇的 \033 ,让打印出彩_第3张图片


*.py 文件调用 color()


下面上一段调用代码,试试 color() 的用法:

#!/usr/bin/nve python # Linux 脚本解释器路径指定注释。
# coding: utf-8 #本脚本编码说明。
import python_color as pcolor
'''加载“ Python 好色”模块。
该模块就俩函数:color() ,colors_table()
color() ,生成 python 能有“色”打印的字符串。
colors_table() 调用函数 color() 
打印 python \033[m...\033[0m 
彩色打印代码表。'''

print(f'\n\n示例打印:\n\n{pcolor.color(" Python 好色", "red"):^60}\n')
#示例居中打印“ Python 好色”

print(f'\n{pcolor.color("Hello world!", "yellow", "red"):^64}\n')
#示例前景色黄色背景色红色居中打印“ Hello world!”

print(f'\n{pcolor.color("梦幻精灵_cq是重庆崽儿。", "green", "gray", "light"):^54}\n')
#示例前景色绿色背景色灰色高亮居中打印“梦幻精灵_cq是重庆崽儿。”

print(pcolor.color('直接使用默认值打印').center(55))

代码运行效果

神奇的 \033 ,让打印出彩_第4张图片


回首页

调用代码

pcolor.colors_table() #调用函数打印“ Python 好色”效果图。

神奇的 \033 ,让打印出彩_第5张图片


回首页

上面这张图打印代码

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。)

def colors_table():
    '''调用 color() 打印效果图'''
    color_s = color(' Python 好色效果图', 'red', 'green', 'light')
    s_033 = "\\033编码"
    print(f'\n\n\n{color_s:_^57}\n\n\n\
{color("色显效果(前景色以红色为例)"	, "yellow", "black", "light"):^52}\n\
\n{color(" Cut-off rule ", "black", "blue", "lobright"):.^64}\
\n\n{color(s_033, "green")	:>22}{"":>5}{color("显示效果", "green")}{"":>6}{color(" color() 单词", "green")}\n\
\n{"0"	:>8}{"":>4}{color("终端默认设置", "red", "black", "default")}{"":>4}{color("default(默认)", "green")}\n\
{"1"	:>8}{"":>4}{color("高亮显示", "red", "black", "light")}{"":>8}{color("light(高亮)", "green")}\n\
{"2"	:>8}{"":>4}{color("低亮显示", "red", "black", "lobright")}{"":>8}{color("lobright(低亮)", "green")}\n\
{"4"	:>8}{"":>4}{color("使用下划线", "red", "black", "unline")}{"":>6}{color("unline(下划线)", "green")}\n\
{"5"	:>8}{"":>4}{color("闪烁", "red", "black", "flicker")}{"":>12}{color("flicker(闪烁)", "green")}\n\
{"7"	:>8}{"":>4}{color("反白显示", "red", "black", "inverse")}{"":>8}{color("inverse(反白)", "green")}\n\
{"8"	:>8}{"":>4}{color("消隐", "red", "black", "blanking")}{"":>12}{color("blanking(消隐)", "green")}\n\
\n{color(" Cut-off rule ", "black", "blue", "lobright"):.^64}\n\
\
\n\n{color("前景色(背景色以黑色为例)"	, "yellow", "black", "light"):^52}\n\
\n{color(" Cut-off rule ", "black", "blue", "lobright"):.^64}\
\n\n{color(s_033, "green")	:>26}{"":>4}{color("颜色", "green")}{"":>6}{color(" color() 单词", "green")}\n\
\n{"30"	:>12}{"":>6}{color("黑色", "black", "blue", "default")}{"":>6}{color("black(黑色)", "green")}\n\
{"31"	:>12}{"":>6}{color("红色", "red", "black", "default")}{"":>6}{color("red(红色)", "green")}\n\
{"32"	:>12}{"":>6}{color("绿色", "green", "black", "default")}{"":>6}{color("green(绿色)", "green")}\n\
{"33"	:>12}{"":>6}{color("黄色", "yellow", "black", "default")}{"":>6}{color("yellow(黄色)", "green")}\n\
{"34"	:>12}{"":>6}{color("蓝色", "blue", "black", "default")}{"":>6}{color("blue(蓝色)", "green")}\n\
{"35"	:>12}{"":>6}{color("紫色", "purple", "black", "default")}{"":>6}{color("purple(紫色)", "green")}\n\
{"36"	:>12}{"":>6}{color("青色", "cyan", "black", "default")}{"":>6}{color("cyan(青色)", "green")}\n\
{"37"	:>12}{"":>6}{color("灰色", "gray", "black", "default")}{"":>6}{color("gary(灰色)", "green")}\n\
{"37"	:>12}{"":>6}{color("白色", "white", "black", "default")}{"":>6}{color("white(白色)", "green")}\n\
\n{color(" Cut-off rule ", "black", "blue", "lobright"):.^64}\n\
\
\n\n{color("背景色(前景色以黑色为例)"	, "yellow", "black", "light"):^52}\n\
\n{color(" Cut-off rule ", "black", "blue", "lobright"):.^64}\
\n\n{color(s_033, "green")	:>26}{"":>4}{color("颜色", "green")}{"":>6}{color(" color() 单词", "green")}\n\
\n{"40"	:>12}{"":>6}{color("黑色", "blue", "black", "default")}{"":>6}{color("black(黑色)", "green")}\n\
{"41"	:>12}{"":>6}{color("红色", "black", "red", "default")}{"":>6}{color("red(红色)", "green")}\n\
{"42"	:>12}{"":>6}{color("绿色", "black", "green", "default")}{"":>6}{color("green(绿色)", "green")}\n\
{"43"	:>12}{"":>6}{color("黄色", "black", "yellow", "default")}{"":>6}{color("yellow(黄色)", "green")}\n\
{"44"	:>12}{"":>6}{color("蓝色", "black", "blue", "default")}{"":>6}{color("blue(蓝色)", "green")}\n\
{"45"	:>12}{"":>6}{color("紫色", "black", "purple", "default")}{"":>6}{color("purple(紫色)", "green")}\n\
{"46"	:>12}{"":>6}{color("青色", "black", "cyan", "default")}{"":>6}{color("cyan(青色)", "green")}\n\
{"47"	:>12}{"":>6}{color("灰色", "black", "gray", "default")}{"":>6}{color("gary(灰色)", "green")}\n\
{"47"	:>12}{"":>6}{color("白色", "black", "white", "default")}{"":>6}{color("white(白色)", "green")}\n\
\n{color(" Cut-off rule ", "black", "blue", "lobright"):.^64}\
\
\n\n\n{color(" The end ", "black", "blue", "lobright"):_^64}\n')

  上面的代码,就是对 color() 用法的最好示例。


注意:
  如上面的代码,对 Python 彩色打印的字符串进行对齐操作,控制彩色显示的代码占据了14个半角位置计算,但却没有真正显示。要记得作相应的处理,才可对打印出齐整的彩色输出。


回首页


神奇的 \033 ,让打印出彩_第6张图片

  加载 color() ,用 help(color) 查看帮助文档。下图是“帮助文档”内容。

神奇的 \033 ,让打印出彩_第7张图片

作者注:
   前面对“消隐”效果的理解有误。特此更正:“消隐”,只作用于前景色。(前面的试炼,用了黑色关背景色,导致我的的认知偏差。“效果图打印”源码已作更正。)
2022-02-17 07:30


回首页

color() 源码

#!/usr/bin/nve python # Linux 脚本解释器路径指定注释。
# coding: utf-8 #本脚本编码说明。


'''

作者:梦幻精灵_cq
QQ:479469838(八爪章鱼)

2022-2-16

'''


def color(s = '要彩色显示的字符串', fg_color = 'gray', bg_color = 'black', effect = 'default'):
    '''
|
|        本函数生成“\\033[效果;前景色;背景色m
|    要彩色显的字符串\\033[0m”字符串,中间不
|    可以有空格,分号是半角分号且“必不可少”。
|    实现 python 代码彩色打印字符串。
|
|     fg_color    前景色
|     bg_color    背景色
|     effect    显示效果
|
|
|    颜色(前/背景色)包括:
|
|    本函数颜色    颜色    \\033代码
|    black    黑色    0
|    red    红色    1
|    green    绿色    2
|    yellow    黄色    3
|    blue    蓝色    4
|    purple    紫色    5
|    cyan    青色    6
|    gray(white) 灰色(白色)    7
|
|
|    效果包括:
|
|    本函数效果    效果    \\033代码
|    	default    默认    0
|    	light    高亮(增加显示亮度)    1
|    	lobright    低亮(降低显示亮度)    2
|    	unline    下划线    4
|    	flicker    闪烁    5
|    	inverse    反白    7
|    	blanking    消隐(大多不用,都不显,
|                还搞什么搞)    8
|
|
|    可缺省参数优先级:
|
|    fg_color > bg_color > effect
|
|        就是说,如果缺省一个参数,只能是效果
|    (effect);缺省两个参数,一定是效果(eff-
|    ect)和背景色(bg_color);三个都缺省,就
|    是本函数默认值。默认值是前景色灰色(gray/
|    white)、背景色(black)、效果(default),
|    和没使用本函数一样,虽然字符串中有
|    彩色打印代码。虽然可以缺省三个参数,但
|    至少要用一个,那就是前景色,才可以彩色
|    打印。
|        要色显的字符串 s ,不可以缺省,一定
|    要有这个参数。不然会报缺少参数的错。
|
|
    '''
    
    
    colors = {
    	'black': 0, 
    	'red': 1, 
    	'green': 2, 
    	'yellow': 3, 
    	'blue': 4, 
    	'purple': 5, 
    	'cyan':6, 
    	'gray': 7,
    	'white': 7,
    	'default': 0, 
    	'light': 1, 
    	'lobright': 2,
    	'unline': 4, 
    	'flicker': 5, 
    	'inverse': 7, 
    	'blanking': 8
    	} #颜色和效果字典
    fg_color = colors.get(fg_color)
    bg_color = colors.get(bg_color)
    effect = colors.get(effect)
    return f'\033[{effect};3{fg_color};4{bg_color}m{s}\033[0m'

回首页

\033 打印控制符和 color() 优劣对比


  • 优点:前者“打印效果”“前景色”“背景色”三个参数可以任意缺省;后者只能“打印效果” > “背景色” > “前景色”优先级缺省。
  • 缺点:前者色彩和效果代码不易识记且易混淆;后者用英文单词(或约定写法)为函数参数,对打印进行控制,方便高效,几乎不用识记。可以无视函数内部 \033 打印控制语法,能“熟练”调用函数就可以“得心应手”控制打印。


回首页

我的HOT博:

    • “快乐数”判断(当前阅读1171)
    • 罗马数字转换器(用罗马数字构造元素的值取模实现)(当前阅读1526)
    • 罗马数字转换器|罗马数字生成器(当前阅读1998)
    • Hot:让QQ群昵称色变的神奇代码(当前阅读4326)
    • 斐波那契数列(递归实现和for实现)(当前阅读2107)
    • 排序数组中查找元素的重复起止位置(当前阅读1205)
    • 柱状图中最大矩形(当前阅读1608)
    • 电话拨号键盘的字母组合(当前阅读1227)
    • 密码强度检测器(当前阅读1671)
    • 求列表平衡点(当前阅读1705)
    • 字符串统计(当前阅读2179)
    • 尼姆游戏(代码优化版)(当前阅读826)
    • 尼姆游戏(聪明版首发)(当前阅读3248)
    • 推荐条件 点阅破千

      参考文章:

      • Python如何打印彩色文本,代码瞬间高大上【深度好文,果断收藏】

      上一篇:

      下一篇:


      好文力荐:靠谱程序员的好习惯


      回首页

      老齐漫画头像

      精品文章:

      • OPP三大特性:封装中的property
      • 通过内置对象理解python'
      • 正则表达式
      • python中“*”的作用
      • Python 完全自学手册
      • 海象运算符
      • Python中的 `!=`与`is not`不同
      • 学习编程的正确方法

      来源:老齐教室


      CSDN实用技巧博文:

      • 8个好用到爆的Python实用技巧
      • python忽略警告

    你可能感兴趣的:(笔记,python)