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爬取读者并制作成PDF
Mar 10 Python
python中while循环语句用法简单实例
May 07 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
使用numba对Python运算加速的方法
Oct 15 Python
python 二维数组90度旋转的方法
Jan 28 Python
python实现移位加密和解密
Mar 22 Python
创建Django项目图文实例详解
Jun 06 Python
python实现最大优先队列
Aug 29 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
如何在向量化NumPy数组上进行移动窗口
May 18 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数据库开发知多少
2006/10/09 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python中join和split用法实例
2015/04/14 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python Django基础二之URL路由系统
2019/07/18 Python
使用python实现名片管理系统
2020/06/18 Python
查看keras的默认backend实现方式
2020/06/19 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
小学生家长评语集锦
2014/01/30 职场文书
大国崛起观后感
2015/06/02 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python