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计算圆周长、面积、球体体积并画出圆
Apr 08 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
python读写csv文件实例代码
Jul 05 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
python Paramiko使用示例
Sep 21 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
python实现MD5进行文件去重的示例代码
Jul 09 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
解析php常用image图像函数集
2013/06/24 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
分页栏的web标准实现
2011/11/01 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python logging 日志的级别调整方式
2020/02/21 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
Python timeit模块原理及使用方法
2020/10/10 Python
办公室主任职责范文
2013/11/08 职场文书
餐饮业会计岗位职责
2013/12/19 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
创先争优活动个人总结
2015/03/04 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
Redis特殊数据类型bitmap位图
2022/06/01 Redis