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查询Mysql时返回字典结构的代码
Jun 18 Python
python中随机函数random用法实例
Apr 30 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
对命令行模式与python交互模式介绍
May 12 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
python自动点赞功能的实现思路
Feb 26 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
python -v 报错问题的解决方法
Sep 15 Python
Python爬虫之Selenium库的使用方法
Jan 03 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构造函数实例讲解
2013/11/13 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
vue.js表格分页示例
2016/10/18 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
python self,cls,decorator的理解
2009/07/13 Python
python使用folium库绘制地图点击框
2018/09/21 Python
Python shelve模块实现解析
2019/08/28 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
python Cartopy的基础使用详解
2020/11/01 Python
用Python 执行cmd命令
2020/12/18 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
酒店节能降耗方案
2014/05/08 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
起诉状范本
2015/05/20 职场文书
十二生肖观后感
2015/06/12 职场文书
小学三年级作文之写景
2019/11/05 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
mysql 索引合并的使用
2021/08/30 MySQL