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

作者:qhh0205 时间:2023-11-18 22:04:17 

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

来源:https://blog.csdn.net/qianghaohao/article/details/52117082

标签:Python,彩色字符,输出
0
投稿

猜你喜欢

  • W3C 发布 XMLHttpRequest 工作草图

    2008-04-28 13:00:00
  • 保护Access 2000数据库的安全

    2008-10-23 13:55:00
  • 把你的数据库置于版本控制之下

    2009-04-25 10:01:00
  • 如何做一个文本搜索?

    2010-07-12 19:00:00
  • Data URI 和 MHTML

    2009-08-16 16:19:00
  • [教程]用代码让你了解网页与键盘

    2008-06-10 12:18:00
  • 比较一下看看自己掌握了多少SQL快捷键

    2009-01-04 14:04:00
  • Python requests.post方法中data与json参数区别详解

    2022-02-06 09:06:20
  • 三分钟学会Sql Server的复制功能[图]

    2008-07-18 12:18:00
  • Python 如何截取字符函数

    2023-02-08 11:39:04
  • 颜色渐变效果

    2013-07-13 14:14:52
  • 电商网站的购买按钮

    2011-07-04 12:18:59
  • 使用Javascript面向对象的思想编写ASP

    2008-06-16 12:20:00
  • 详细介绍ASP内置对象Response

    2008-06-23 12:42:00
  • 使用Python导出Excel图表以及导出为图片的方法

    2021-02-28 09:59:21
  • ACCESS数据库遇日文时内存溢出的最简单处理办法

    2009-07-09 14:04:00
  • Django模板过滤器和继承示例详解

    2023-10-25 16:52:56
  • 对python中return与yield的区别详解

    2022-10-19 00:47:33
  • Python参数传递机制传值和传引用原理详解

    2023-07-28 11:16:02
  • python 还原梯度下降算法实现一维线性回归

    2023-10-09 21:53:42
  • asp之家 网络编程 m.aspxhome.com