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

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各个版本。

数值参数表示的意义:

说明:

前景色 背景色 颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

显示方式:

显示方式 意义
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/di2wu/p/8972230.html

时间: 2024-11-13 06:48:53

Python学习-终端字体高亮显示1的相关文章

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

实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033). 格式: 开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别:但是,建议按照

Python之路【第二十四篇】:Python学习路径及练手项目合集

Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Python技术路径中包含入门知识.Python基础.Web框架.基础项目.网络编程.数据与计算.综合项目七个模块.路径中的教程将带你逐步深入,学会如何使用 Python 实现一个博客,桌面词典,微信机器人或网络安全软件等.完成本路径的基础及项目练习,将具备独立的Python开发能力. 完整的Python学

Python学习之使用Python操作Redis数据库

最近在写一个检查一台服务器上所有游戏区服配置文件中redis某个key值大小的脚本,本打算使用shell+awk+sed的方式去解决这个问题,但是由于redis的配置信息是php数组形式.shell脚本一时没有写出来,就请教他人帮忙写了个python脚本,但是自己python不是很精通,于是按照脚本中涉及到的python知识现学现用,然后根据自己的需求更改脚本.这里分享一下如何使用python操作redis数据库. Redis的Python驱动源码下载地址是https://github.com/

Python学习之路——day01

一.Python介绍 1.Python的诞生 Python的作者叫Guido Van Rossum(吉多 范 罗苏姆),是在1989年圣诞节的时候老婆孩子不在家,他为了打发时候写的一个程序,作为ABC语言的一种继承,太牛奔了! 2.和其他语言的比较 Python属于高级语言,和C#.Java一样,编译的顺序都是从代码==>内存==>解释器编译成字节码==>机器码,所以速度上会比C语言差一些,因为C语言是直接将代码编译成机器码的. 3.自己对Python的理解 Python用途很广泛,现在

Python学习(一):入门篇:python中的一些数据结构

Python里的一些基本知识点总结 Last Edit 2014/5/2 这里记录的是Python2.7版本的语法特征,部分与Python3.0是不一样的. 一,关于开发环境 在windows下可以直接在官网下载相关的版本,然后默认安装.使用直带的IDLE编辑器. IDLE中两个有用的快捷键: ALT+P:重复历史命令(从最近到最老) ALT+N:   重复历史命令(从最老到最近) IDLE中没有清屏功能. 在cmd中进行: 1,首先要在环境变量的path中添加相关的路径: C:\Python2

python 学习笔记 7 -- Python关键字总结

0.写在前面的话 学习一门语言最重要的功课是练习与复习,在<笨方法学Python>中第三十七节虽然没有教你任何内容,但是它提醒我们:"学了这么多,你还能记得多少?该复习了!" 下面我们就对这一节的第一部分"关键字"来做个复习: Python中的关键字包括如下: and       del        from      not      while    as        elif       global    or       with     

Python学习资料整理以及书籍、开发工具推荐

我不知道大家学习Python的时候是不是和我一样感觉很无助,不知道在入门或者进阶的时候应该掌握哪些知识点,下面我就梳理下我自己学习Python开 发的过程及资料分享给大家,这些方法资料可能并不适合所有人,仅供大家参考.具体需要掌握哪些知识,我就不详解介绍了,我分享出来的资料都有具体的讲解的 哈. 入门阶段:1.HTML+css基础入门(HTML的语法.基本结构.标记.css样式等等)2.Javascript基础知识(掌握javascript的变量.数据类型.隐式转换.表达式.运算符等等)3.Jq

python 学习笔记 12 -- 写一个脚本获取城市天气信息

最近在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么能够显示后最重要的就是显示什么的问题了.最容易想到的就是显示时间啊,CPU利用率啊,IP地址之类的.那么我觉得呢,如果能够显示当前时间.温度也是甚好的,作为一个桌面小时钟还是很精致的. 1. 目前有哪些工具 目前比较好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也很简单: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-util 安装

python学习笔记——信号模块signal

基于python学习笔记--多进程间通信--Linux信号基础的学习基础,进一步学习Python标准库中的signal模块. 尽管signal是python中的模块,但是主要针对UNIX平台(比如Linux,MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统的功能. signal模块负责python程序内部的信号处理:典型的操作包括信号处理函数.暂停并等待信号,以及定时发出SIGALRM等: 1 signal基本信号名 引入模块