Python学习-终端字体高亮显示

1、采用原生转义字符序列,对Windows有的版本不支持(比如win7),完美支持Linux

实现过程:

终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。

转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。

格式:

     开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m

     注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。
     对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。
用这种原生的转义序列输出,在linux下完全支持,但是在windows下确存在兼容问题,比如在win10下可以正常显示颜色,在win7下确不支持。因此可以使用python标准库提供的colorama模块输出彩色字体,这个模块是跨平台的,内部实现也是采用转义序列来显示颜色的,只不过对windows平台做了特殊处理,因此完全兼容linux和windows各个版本。
数值参数表示的意义:
说明:
前景色背景色颜色
3040黑色
3141红色
3242绿色
3343黄色
3444蓝色
3545紫红色
3646青蓝色
3747白色

显示方式:

显示方式意义
0终端默认设置
1高亮显示
4使用下划线
5闪烁
7反白显示
8不可见
 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/4/29 10:27
 4 # @Author  : yang
 5 # @File    : Colored_Escape_character.py
 6 # @Software: PyCharm
 7 #--------------------------------
 8 #显示格式:\033[显示方式;前景色;背景色m
 9 #--------------------------------
10 #显示方式           说明
11 #   0             终端默认设置
12 #   1             高亮显示
13 #   4             使用下划线
14 #   5             闪烁
15 #   7             反白显示
16 #   8             不可见
17 #   22            非粗体
18 #   24            非下划线
19 #   25            非闪烁
20 #
21 #前景色            背景色          颜色
22 #  30                40            黑色
23 #  31                41            红色
24 #  32                42            绿色
25 #  33                43            黄色
26 #  34                44            蓝色
27 #  35                45            紫红色
28 #  36                46            青蓝色
29 #  37                47            白色
30 #---------------------------------------
31 class Colored(object):
32     RED = '\033[31m'       #红色
33     GREEN = '\033[32m'     #绿色
34     YELLOW = '\033[33m'    #黄色
35     BLUE = '\033[34m'      #蓝色
36     FUCHSIA = '\033[35m'   #紫红色
37     CYAN = '\033[36m'      #青蓝色
38     WHITE = '\033[37m'     #白色
39     #:no color
40     RESET = '\033[0m'      #终端默认颜色
41     def color_str(self,color,s):
42         return '{}{}{}'.format(getattr(self,color),s,self.RESET)
43 
44     def red(self,s):
45         return self.color_str('RED',s)
46     def green(self,s):
47         return self.color_str('GREEN',s)
48     def yellow(self,s):
49         return self.color_str('YELLOW',s)
50     def blue(self,s):
51         return self.color_str('BLUE',s)
52     def fuchsia(self,s):
53         return self.color_str('FUCHSIA',s)
54     def cyan(self,s):
55         return self.color_str('CYAN',s)
56     def white(self,s):
57         return self.color_str('WHITE',s)
58 #-----------使用示例如下--------
59 color = Colored()
60 print(color.red('I am red!'))
61 print(color.green('I am green!'))
62 print(color.yellow('I am yellow!'))
63 print(color.blue('I am blue!'))
64 print(color.fuchsia('I am fuchsia!'))
65 print(color.cyan('I am cyan!'))
66 print(color.white('I am white!'))

 输出结果:

2、采用Python标准库colorama模块--兼容linux和windows各个版本:

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/4/29 10:57
 4 # @Author  : yang
 5 # @File    : Colored_Colorama_module.py
 6 # @Software: PyCharm
 7 #--------------colorama模块的一些常量-------
 8 #colorama是一个python专门用来在控制台、命令行输出彩色文字的模块,可以跨平台使用
 9 # 在windows下linux下都工作良好,如果你想让控制台的输出信息更漂亮一些,可以使用给这个模块。
10 # Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
11 # Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
12 # Style: DIM, NORMAL, BRIGHT, RESET_ALL
13 from colorama import init,Fore,Back,Style
14 #init(autoreset=True)
15 class Colored(object):
16     def red(self,s):
17         return Fore.RED + s + Fore.RESET
18     def green(self,s):
19         return Fore.GREEN + s + Fore.RESET
20     def yellow(self,s):
21         return Fore.YELLOW + s + Fore.RESET
22     def blue(self,s):
23         return Fore.BLUE + s + Fore.RESET
24     def magenta(self,s):
25         return Fore.MAGENTA + s + Fore.RESET
26     def cyan(self,s):
27         return Fore.CYAN + s + Fore.RESET
28     def white(self,s):
29         return Fore.WHITE + s + Fore.RESET
30     def balck(self,s):
31         return Fore.BLACK
32     def white_green(self,s):
33         return Fore.WHITE + Back.GREEN + s + Fore.RESET + Back.RESET
34 color = Colored()
35 print(color.red('I am red!'))
36 print(color.green('I am green!'))
37 print(color.yellow('I am yellow!'))
38 print(color.blue('I am blue!'))
39 print(color.magenta('I am magenta!'))
40 print(color.cyan('I am cyan!'))
41 print(color.white('I am white!'))
42 print(color.white_green('I am white green!'))
输出结果:
 3、采用Python的termcolor模块:

termcolor是一个python包,可以改变控制台输出的颜色,支持各种terminal(WINDOWS的cmd.exe除外)。

支持下列的文字颜色:

grey, red, green, yellow, blue, magenta, cyan, white

支持下列的背景高亮:

on_grey, on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white

支持下列属性:

bold, dark, underline, blink, reverse, concealed

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/4/29 16:49
 4 # @Author  : yang
 5 # @File    : Colored_Termcolor_module.py
 6 # @Software: PyCharm
 7 import sys
 8 from termcolor import colored,cprint
 9 text = colored('Hello,World!','red',attrs=['reverse','blink'])
10 
11 #colored(text, color=None, on_color=None, attrs=None)
12 #    Available text colors:
13 #        red, green, yellow, blue, magenta, cyan, white.
14 
15 #    Available text highlights:
16 #        on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white.
17 
18 #    Available attributes:
19 #        bold, dark, underline, blink, reverse, concealed.
20 #print('\033[5;7;31mHello,World!\033[0m')
21 
22 print(text)
23 
24 cprint('Hello,World!','green','on_red')
25 #cprint('Hello,World!','green','on_red',attrs=['bold'])
26 #def cprint(text, color=None, on_color=None, attrs=None, **kwargs)
27 
28 print_red_on_cyan = lambda x:cprint(x,'red','on_cyan')
29 print_red_on_cyan('Hello,World!')
30 print_red_on_cyan('Hello,Universe!')
31 for i in range(10):
32     cprint(i,'magenta',end=' ')
33 cprint('Attention!','red',attrs=['bold'],file = sys.stderr)

 

输出结果:

 

参考:

1、https://pypi.org/project/colorama/

2、https://pypi.org/project/termcolor/#description

3、https://www.cnblogs.com/hellojesson/p/5961570.html

4、https://stackoverflow.com/questions/287871/print-in-terminal-with-colors/3332860#3332860

转载于:https://www.cnblogs.com/yangshijia/p/8969271.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js下载文件 java_[Java教程]使用js实现点击按钮下载文件

[Java教程]使用js实现点击按钮下载文件0 2016-11-11 19:02:54有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方法:现在需要在页面上添加一个下载按钮,点…

Django二次开发对接FastDFS

1.自定义文件存储器类 配置文件settings中加入如下配置 # 设置Django的文件存储类、(名字固定) DEFAULT_FILE_STORAGEutils.fdfs.storage.FDFSStorage# 设置fdfs使用的client.conf文件路径(名字自己定义) FDFS_CLIENT_CONF./util…

微信支付 java 集成案例_Spring Boot项目中集成微信支付v3

1. 前言最近忙的一批,难得今天有喘气的机会就赶紧把最近在开发中的一些成果分享出来。前几日分享了自己写的一个微信支付V3的开发包payment-spring-boot-starter,就忙里偷闲完善了一波。期间给微信支付提交了6个BUG,跟微信支付的产品沟通了好…

16. vim

vim编辑器是vi的升级版本,带颜色显示安装yum install -y vim-enhanced将passwd文件复制到其他目录下,vim后没有颜色 一般模式上下左右方向键或kjhl四个键移动光标n方向键 向特定方向移动n位ctrl b 或 pageup 向上翻页ctrl f 或 pagedown 向下翻页0或sh…

Jmeter(三)_配置元件

HTTP Cookie Manager 用来存储浏览器产生的用户信息 Clear Cookies each Iteration:每次迭代请求,清空cookies,GUI中定义的任何cookie都不会被清除。Implementation:默认HC4CookieHandlerCookie Policy:将用于管理Cook…

Django项目--首页静态化

0前言 1.使用Celery生成静态页面 task.py中新增任务函数generate_static_index_html(),任务函数生成静态页面。 app.task def generate_static_index_html():产生首页静态页面# 获取商品的种类信息types GoodsType.objects.all()# 获取首页轮播商品信息goods_bann…

C语言指针,申请、释放内存,线程

2019独角兽企业重金招聘Python工程师标准>>> 1:普通情况下,C语言的指针是使用虚拟地址,并非物理地址; 2:C语言mallco函数可以根据输入的值,申请一块连续的内存;free(*p&a…

Docker在Ubuntu16.04上安装

转自:http://blog.51cto.com/collen7788/2047800 1、添加Docker源 sudo apt-get update 2、增加CA证书 sudo apt-get install apt-transport-https ca-certificates 3、添加GPG Key(一种加密手段) sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:…

Django项目--静态首页的数据缓存(设置、获取、更新)

0 前言 将处理计算的结果先临时保存起来,下次使用的时候可以先直接使用,如果没有这个备份的数据,重新进行计算处理。 将缓存数据保存在内存中 (本项目中保存在redis中) cache注意事项: 1)如果…

关于腾讯算法大赛

腾讯算法大赛 本文参考于我协会前会长吴师兄的文档 腾讯社交广告高校算法大赛是面向高校大学生的算法大赛,作为腾讯核心的广告业务单元,腾讯社交广告通过对海量社交数据进行深入分析,构建多样广告场景,与8亿用户连接对话。在大数据…

NavigationView更改菜单icon和title颜色变化效果

NavigationView menu默认icon和title会随着菜单状态改变而改变,选择某个菜单后再次打开侧边菜单后会发现该菜单的icon和title会变成应用的主颜色,其他菜单项仍然为黑色。 如果想关闭系统默认的这个效果,有两种方式: 1. XML布局文件…

kangle服务器搭建java_linux下kangle虚拟主机-架设java空间的教程及心得

1. chmod x jdk-6u31-linux-i586-rpm.bin2. ./jdk-6u31-linux-i586-rpm.bin复制代码(注:如果下载的版本不同输入实际版本)2.下载插件包:1. wget http://www.kanglesoft.com/download/ent/easypanel-tomcat-lin-1.0.tar.gz2. tar xzf easypanel-tomcat-lin-1.0.tar.g…

Django项目--csrf攻击

1.案例流程图: 2.django防止csrf的方式: 1 ) Django中默认打开csrf中间件。settings.py文件中: MIDDLEWARE_CLASSES (django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middlewar…

mysql count(*),count(1)与count(column)区别

2019独角兽企业重金招聘Python工程师标准>>> count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值。 count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。 性能问…

Flask项目--预防csrf攻击原理

1.CSRF机制原理 2.csrf成功攻击示意图 3.csrf防御

Flsak项目--图片验证码

0. 图片验证码的使用流程 2.后端接口编写 verify_code.py中编写接口代码: # coding:utf-8from . import api from ihome.utils.captcha.captcha import captcha from ihome import redis_store, constants, db from flask import current_app, jsonify, make_respo…

js异步解决方案 --- 回调函数 vs promise vs generater/yield vs async/await

javascript -- 深度解析异步解决方案 高级语言层出不穷, 然而唯 js 鹤立鸡群, 这要说道js的设计理念, js天生为异步而生, 正如布道者朴灵在 node深入浅出--(有兴趣的可以读一下, 很有意思^_^) , 异步很早就存在于操作系统的底层, 意外的是,在绝大多数高级编程语言中…

sql注入基本原理

1. 参考文献: 趣解SQL注入原理 Sql注入基本原理 2.参考书籍