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终端输出彩色字符方法请查看下面的相关链接

(0)

相关推荐

  • python循环输出三角形图案的例子

    我就废话不多说了,直接上代码吧! #Copyright (c)2017, 东北大学软件学院学生 # All rightsreserved #文件名称:a.py #作 者:孔云 #问题描述:编写程序,使用双循环输出三角形图案. #问题分析:本程序由图形知,包含5行,即外层循环执行5次,每行内容的由三部分内容组成:空格.星号.回车,分别通过两个for循环和一条print语句实现.代码如下: for i in range(1,6): for j in range(5-i): print(" "

  • python系统指定文件的查找只输出目录下所有文件及文件夹

    修改python运行路径 import os os.chdir('C:/Users/86177/Desktop') os.chdir(r'C:\Users\86177\Desktop') os.chdir('C:\\Users\\86177\\Desktop') 路径加载连接的三种方式:'/'. '\' . r'' 获得当前python程序运行路径 import os print(os.getced()) 输出结果为:'C:\Users\86177\Desktop'(当前程序在的路径) pyth

  • 基于Python执行dos命令并获取输出的结果

    这篇文章主要介绍了基于Python执行dos命令并获取输出的结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import os import subprocess # 第一种 result1 = subprocess.check_output('dir').decode('GBK') print(result1) print('---------------------------------------------------------

  • python将邻接矩阵输出成图的实现

    利用networkx,numpy,matplotlib,将邻接矩阵输出为图形. 1,自身确定一个邻接矩阵,然后通过循环的方式添加变,然后输出图像 import networkx as nx import matplotlib.pyplot as plt import numpy as np G = nx.Graph() Matrix = np.array( [ [0, 1, 1, 1, 1, 1, 0, 0], # a [0, 0, 1, 0, 1, 0, 0, 0], # b [0, 0, 0

  • Python字符串格式化输出代码实例

    这篇文章主要介绍了Python字符串格式化输出代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用占位符%s name = '小飞' print('姓名是: %s' % name) format()函数 格式:"{} {}".format(value,value) 示例: name = 'Tom' age = 7 hobby = '玩滑滑梯!' money = 8.5 message= '{}今年{}岁,最喜欢{},有零花钱:

  • python 串口读取+存储+输出处理实例

    研究了一晚上的成果. import serial import win32com.client import matplotlib.pyplot as plt import numpy as np ser = serial.Serial("COM6", 115200, bytesize = 8,timeout=0.5) # 打开串口 print("我要开始了:") res=[] while (1): ch = ser.readline(1) result = ''

  • Python 控制终端输出文字的实例

    如下所示: class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' def disable(self): self.HEADER = '' self.OKBLUE = '' self.OKGREEN = '' self.WARNING = '' self.FAIL = '' self.END

  • python Popen 获取输出,等待运行完成示例

    我就废话不多说了,直接上代码吧! import subprocess def excuteCommand(com): ex = subprocess.Popen(com, stdout=subprocess.PIPE, shell=True) out, err = ex.communicate() status = ex.wait() print("cmd in:", com) print("cmd out: ", out.decode()) return out.

  • 使用Python实现分别输出每个数组

    我就废话不多说了,直接上代码吧! a=[[1,2,3],[4,5][6,7]["a","b"",c"]] # i=0 # while i<len(a): # print(a[i]) # i+=1 # a=[[1,2,3],[4,5],[6,7],["a","b","c"]] # for i in range(0,len(a)): # print(a[i]) a=[[1,2,3],[

  • python3中利用filter函数输出小于某个数的所有回文数实例

    我就废话不多说了,直接上代码吧! def _int_iter(): """根据回文数的定义.首先生成一个从0开始的整数无限序列""" n = 0 while True: yield n n += 1 def _is_palindrome(n): """判断n是否为回文数,是就返回Ture,否就返回False""" L1 = list(str(n)) L2 = L1[:] # 利用列表的切

  • Python 格式化输出_String Formatting_控制小数点位数的实例详解

    问题概述: 有时候在使用print函数输出时,往往需要不断地切换字符串和变量,操作起来很不方便,需要不断地打引号和逗号.比如: firstName = 'Bob' lastName = 'Dylan' print('你的名字是 ', firstName, '你的姓是', lastName) 好在我们可以用%来代替变量名,最后再依次序解释每个%对应的变量是什么就可以了. firstName = 'Bob' lastName = 'Dylan' print('你的名字是%s, 你的姓是%s' % (

  • python 输出列表元素实例(以空格/逗号为分隔符)

    给定list,如何以空格/逗号等符号以分隔符输出呢? 一般的,简单的for循环可以打印出list的内容: l=[1,2,3,4] for i in l: print(i) 输出结果一行一个元素: 1 2 3 4 若想得到以空格或逗号为分隔符的输出结果,代码可改为: l=[1,2,3,4] for i in l: print(i,end=' ')#以空格为分隔符 输出结果为:1 2 3 4 (注意,此时4后面还有一个空格) l=[1,2,3,4] for i in l: print(i,end='

  • python实现异常信息堆栈输出到日志文件

    将try except中捕获到的异常信息输出到日志文件中,方便查找错误原因,tranceback模块提供了把详细出错堆栈信息格式化成字符串返回函数format_exc(). 具体代码如下 import traceback import logging logging.basicConfig(filename='log.log') def error_func(): b = 1 / 0 if __name__ == '__main__': try: error_func() except: s =

  • Python Print实现在输出中插入变量的例子

    如果想在打印的字符串中的任意地方加入任意的变量,可以使用python的格式化输出. 用例如下: s = 'Hello' x = len(s) print("The length of %s is %d" % (s,x)) #Print :The length of Hello is 5 下面是关于格式化输出的一些总结: (1). %字符:标记转换说明符的开始 (2). 转换标志:-表示左对齐:+表示在转换值之前要加上正负号:""(空白字符)表示正数之前保留空格:0表

  • python输出数组中指定元素的所有索引示例

    如下所示,代码为: array也可直接使用上面代码.测试如下: 以上这篇python输出数组中指定元素的所有索引示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python 使用 prettytable 库打印表格美化输出功能

    pip install prettytable 每次添加一行 from prettytable import PrettyTable # 默认表头:Field 1.Field 2... # 添加表头 table = PrettyTable(["URL", "参数", "值"]) # add_row 添加一行数据 table.add_row(["http://aaa.com", "raskv", "

  • Python输出指定字符串的方法

    问题描述 输入一串字符,由字母.数字和空格组成,长度 < 1000, 判断其中是否存在日期格式的数据.日期格式的数据具有如下的特征,连续包含年份和月份信息.年份信息是指连续的四个数字,之后是 Jan, Feb, Mar,Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec 这些字符串之一 , 如" 2019Nov" 就是符合日期格式要求的数据. 解决方案 从字符串中采取切片的方式来进行指定输出,用条件判断来进行限制输出想要的格式 ( 1 ) 设置

  • 关于python pycharm中输出的内容不全的解决办法

    很多时候我们会发现有的时候输出的结果特别多的时候,会在最后输出时用...代替,最后输出一个总长度,那要咋么弄咧? import pandas as pd # 设置显示的最大列.宽等参数,消掉打印不完全中间的省略号 # pd.set_option('display.max_columns', 1000) pd.set_option('display.width', 1000)#加了这一行那表格的一行就不会分段出现了 # pd.set_option('display.max_colwidth', 1

  • Python操作多维数组输出和矩阵运算示例

    本文实例讲述了Python操作多维数组输出和矩阵运算.分享给大家供大家参考,具体如下: 在许多编程语言中(Java,COBOL,BASIC),多维数组或者矩阵是(限定各维度的大小)预先定义好的.而在Python中,其实现更简单一些. 如果需要处理更加复杂的情形,可能需要使用Python的数学模块包NumPy,链接地址:http://numpy.sourceforge.net/ 首先来看一个简单的二维表格.投掷两枚骰子时,有36种可能的结果.我们可以将其制成一个二维表格,行和列分别代表一枚骰子的得

  • python游戏开发之视频转彩色字符动画

    本文实例为大家分享了python视频转彩色字符动画的具体代码,供大家参考,具体内容如下 一.效果 原图: 转换后: 效果可通过代码开头几行的参数调节 二.代码 开头几行代码,自己看着调整,把效果调到最佳就ok. 依赖库: pip install opencv-python pip install pygame 代码: import pygame import cv2 FONT_SIZE = 18 # 字体大小,可自行调整 WIN_SIZE = (1440, 1000) # 窗口大小,可自行调整

随机推荐