有時候需要在終端顯示彩色的字符,即根據需要顯示不同顏色的字符串,比如我們要在終端打印一行錯誤提示信息,要把它弄成紅色的。其實這個在Python中很好實現,使用轉義序列來實現不同顏色的顯示,轉義序列以ESC開頭,它的ASCII碼八進制為 /033。顯示格式為:/033[顯示方式;前景色;背景色m
用這種原生的轉義序列輸出,在linux下完全支持,但是在windows下確存在兼容問題,比如在win10下可以正常顯示顏色,在win7下確不支持。因此可以使用python標準庫提供的colorama模塊
輸出彩色字體,這個模塊是跨平臺的,內部實現也是采用轉義序列來顯示顏色的,只不過對windows平臺做了特殊處理,因此完全兼容linux和windows各個版本。
以下封裝了一個Colored類,提供了兩個版本,第一個版本采用原生的轉義字符序列輸出各種顏。
第二個版本用python標準庫的colorama模塊兼容windows和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')
新聞熱點
疑難解答