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异步回调机制实现和使用方法
Nov 26 Python
centos系统升级python 2.7.3
Jul 03 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
深入理解Python分布式爬虫原理
Nov 23 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Python按钮的响应事件详解
Mar 04 Python
python绘制直方图和密度图的实例
Jul 08 Python
浅谈python3中input输入的使用
Aug 02 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
python3 map函数和filter函数详解
Aug 26 Python
Python自动化测试基础必备知识点总结
Feb 07 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
php xml文件操作代码(一)
2009/03/20 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
JS中的三个循环小结
2017/06/20 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
vue中实现左右联动的效果
2018/06/22 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
python实现批量监控网站
2016/09/09 Python
python实现log日志的示例代码
2018/04/28 Python
Python玩转Excel的读写改实例
2019/02/22 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
遇到的Mysql的面试题
2014/06/29 面试题
保安公司服务承诺书
2014/05/28 职场文书
化学教育专业自荐信
2014/07/04 职场文书
党性心得体会
2014/09/03 职场文书
二手房购房意向书
2015/05/09 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python