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操作时间和日期之asctime()方法的使用
May 22 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
Python数组定义方法
Apr 13 Python
python获取list下标及其值的简单方法
Sep 12 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
python 猴子补丁(monkey patch)
Jun 26 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
destoon之一键登录设置
2014/06/21 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
Python实现图片拼接的代码
2018/07/02 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
珠宝店促销方案
2014/03/21 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python