Python终端输出彩色字符方法详解


Posted in Python onFebruary 11, 2020

有时候需要在终端显示彩色的字符,即根据需要显示不同颜色的字符串,比如我们要在终端打印一行错误提示信息,要把它弄成红色的。其实这个在Python中很好实现,使用转义序列来实现不同颜色的显示,转义序列以ESC开头,它的ASCII码八进制为 \033。显示格式为:\033[显示方式;前景色;背景色m

用这种原生的转义序列输出,在linux下完全支持,但是在windows下确存在兼容问题,比如在win10下可以正常显示颜色,在win7下确不支持。因此可以使用python标准库提供的colorama模块

输出彩色字体,这个模块是跨平台的,内部实现也是采用转义序列来显示颜色的,只不过对windows平台做了特殊处理,因此完全兼容linux和windows各个版本。

以下封装了一个Colored类,提供了两个版本,第一个版本采用原生的转义字符序列输出各种颜。

第二个版本用python标准库的colorama模块兼容windows和linux。当要在终端打印彩色字体时直接调用对应的方法即可,很方便。

一.Colored版本

1:采用原生的转义字符序列---对windows有的版本不支持(比如win7),linux完美支持

#coding:gbk
# ------------------------------------------------
#  python终端显示彩色字符类,可以调用不同的方法
# 选择不同的颜色.使用方法看示例代码就很容易明白.
# ------------------------------------------------
#
# 显示格式: \033[显示方式;前景色;背景色m
# ------------------------------------------------
# 显示方式       说明
#  0         终端默认设置
#  1         高亮显示
#  4         使用下划线
#  5         闪烁
#  7         反白显示
#  8         不可见
#  22        非粗体
#  24        非下划线
#  25        非闪烁
#
#  前景色       背景色      颜色
#   30        40       黑色
#   31        41       红色
#   32        42       绿色
#   33        43       ?色
#   34        44       蓝色
#   35        45       紫红色
#   36        46       青蓝色
#   37        47       白色
# ------------------------------------------------
class Colored(object):
  # 显示格式: \033[显示方式;前景色;背景色m
  # 只写一个字段表示前景色,背景色默认
  RED = '\033[31m'    # 红色
  GREEN = '\033[32m'   # 绿色
  YELLOW = '\033[33m'  # 黄色
  BLUE = '\033[34m'   # 蓝色
  FUCHSIA = '\033[35m'  # 紫红色
  CYAN = '\033[36m'   # 青蓝色
  WHITE = '\033[37m'   # 白色
 
  #: no color
  RESET = '\033[0m'   # 终端默认颜色
 
  def color_str(self, color, s):
    return '{}{}{}'.format(
      getattr(self, color),
      s,
      self.RESET
    )
 
  def red(self, s):
    return self.color_str('RED', s)
 
  def green(self, s):
    return self.color_str('GREEN', s)
 
  def yellow(self, s):
    return self.color_str('YELLOW', s)
 
  def blue(self, s):
    return self.color_str('BLUE', s)
 
  def fuchsia(self, s):
    return self.color_str('FUCHSIA', s)
 
  def cyan(self, s):
    return self.color_str('CYAN', s)
 
  def white(self, s):
    return self.color_str('WHITE', s)
 
# ----------使用示例如下:-------------
color = Colored()
print color.red('I am red!')
print color.green('I am gree!')
print color.yellow('I am yellow!')
print color.blue('I am blue!')
print color.fuchsia('I am fuchsia!')
print color.cyan('I am cyan!')
print color.white('I am white')

颜色对比图(根据需要自己设置对应的值):

Python终端输出彩色字符方法详解

运行效果:

Python终端输出彩色字符方法详解

二.Colored版本

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

# -----------------colorama模块的一些常量---------------------------
# Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
# Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
# Style: DIM, NORMAL, BRIGHT, RESET_ALL
#
 
from colorama import init, Fore, Back, Style
init(autoreset=True)
class Colored(object):
 
  # 前景色:红色 背景色:默认
  def red(self, s):
    return Fore.RED + s + Fore.RESET
 
  # 前景色:绿色 背景色:默认
  def green(self, s):
    return Fore.GREEN + s + Fore.RESET
 
  # 前景色:黄色 背景色:默认
  def yellow(self, s):
    return Fore.YELLOW + s + Fore.RESET
 
  # 前景色:蓝色 背景色:默认
  def blue(self, s):
    return Fore.BLUE + s + Fore.RESET
 
  # 前景色:洋红色 背景色:默认
  def magenta(self, s):
    return Fore.MAGENTA + s + Fore.RESET
 
  # 前景色:青色 背景色:默认
  def cyan(self, s):
    return Fore.CYAN + s + Fore.RESET
 
  # 前景色:白色 背景色:默认
  def white(self, s):
    return Fore.WHITE + s + Fore.RESET
 
  # 前景色:黑色 背景色:默认
  def black(self, s):
    return Fore.BLACK
 
  # 前景色:白色 背景色:绿色
  def white_green(self, s):
    return Fore.WHITE + Back.GREEN + s + Fore.RESET + Back.RESET
 
color = Colored()
print color.red('I am red!')
print color.green('I am gree!')
print color.yellow('I am yellow!')
print color.blue('I am blue!')
print color.magenta('I am magenta!')
print color.cyan('I am cyan!')
print color.white('I am white!')
print color.white_green('I am white green!')

运行效果:

Python终端输出彩色字符方法详解

更多关于Python终端输出彩色字符方法请查看下面的相关链接

Python 相关文章推荐
python实现根据窗口标题调用窗口的方法
Mar 13 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
python数据类型_字符串常用操作(详解)
May 30 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
Python实现Dijkstra算法
Oct 17 Python
Python Pexpect库的简单使用方法
Jan 29 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
浅谈python 类方法/静态方法
Sep 18 Python
在python中对于bool布尔值的取反操作
Dec 11 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 #Python
利用python中集合的唯一性实现去重
Feb 11 #Python
TensorFLow 变量命名空间实例
Feb 11 #Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 #Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 #Python
pytorch中图像的数据格式实例
Feb 11 #Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 #Python
You might like
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
Python中字符串的处理技巧分享
2016/09/17 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python中元组,列表,字典的区别
2017/05/21 Python
Python 列表理解及使用方法
2017/10/27 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
班长岗位职责
2013/11/10 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
公司晚会主持词
2019/04/17 职场文书
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记