Python终端输出彩色字符方法详解

 更新时间:2020年02月11日 15:45:03   作者:qhh0205  
这篇文章主要介绍了Python终端输出彩色字符方法详解,需要的朋友可以参考下

有时候需要在终端显示彩色的字符,即根据需要显示不同颜色的字符串,比如我们要在终端打印一行错误提示信息,要把它弄成红色的。其实这个在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')

颜色对比图(根据需要自己设置对应的值):

运行效果:

二.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之玩转字符串(1)

    跟老齐学Python之玩转字符串(1)

    本文主要讲诉了字符串的定义,变量链接到字符串,以及对字符串的简单操作,都是些非常基础的东西,适合零基础的Pythoner学习,觉得有用的话,多鼓鼓掌吧
    2014-09-09
  • 深入理解Python中的Contextlib库

    深入理解Python中的Contextlib库

    Python提供了一些内建的库以支持各种常见的编程任务,Contextlib库是其中之一,它提供了一些用于支持上下文管理协议(即with语句)的函数,这篇文章将详细介绍如何使用Contextlib库中的功能,需要的朋友可以参考下
    2023-06-06
  • 跟老齐学Python之类的细节

    跟老齐学Python之类的细节

    前面对类的有关内容已经描述不少了,其实话题远远没有结束,不过对于初学者,掌握这些已经算是入门,在以后的实践中,还需要进行体会和感悟。
    2014-10-10
  • 详解Python核心对象类型字符串

    详解Python核心对象类型字符串

    本篇文章通过理论知识点给大家讲述了Python核心对象类型字符串的相关知识内容,对此有兴趣的一起学习下。
    2018-02-02
  • Python基于dom操作xml数据的方法示例

    Python基于dom操作xml数据的方法示例

    这篇文章主要介绍了Python基于dom操作xml数据的方法,结合实例形式分析了Python针对xml格式文件的加载、读取、节点与属性遍历等相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • Python编程中的反模式实例分析

    Python编程中的反模式实例分析

    这篇文章主要介绍了Python编程中的反模式,详细讲述了反模式的害处并以实例形式具体分析了容易造成的易错点,对于Python学习来说具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • python 实现将小图片放到另一个较大的白色或黑色背景图片中

    python 实现将小图片放到另一个较大的白色或黑色背景图片中

    今天小编就为大家分享一篇python 实现将小图片放到另一个较大的白色或黑色背景图片中,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python基于PyGraphics包实现图片截取功能的方法

    Python基于PyGraphics包实现图片截取功能的方法

    这篇文章主要介绍了Python基于PyGraphics包实现图片截取功能的方法,涉及PyGraphics包的安装及基于PyGraphics包实现图片的打开、读取、截取等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • python中内置库csv的使用及说明

    python中内置库csv的使用及说明

    这篇文章主要介绍了python中内置库csv的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Python3 使用selenium插件爬取苏宁商家联系电话

    Python3 使用selenium插件爬取苏宁商家联系电话

    这篇文章主要介绍了Python3 selenium爬取苏宁商家联系电话,此处使用了selenium插件 使用的是火狐浏览器 信息存储到csv表格里面,需要的朋友可以参考下
    2019-12-12

最新评论