實現過程: 終端的字元顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關。 轉義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進位表示是27,用八進位表示就是033)。 格式: 開頭部分:\033[顯示方式;前景色;背景色m + 結尾部分:\033[0m 註意:開 ...
1、採用原生轉義字元序列,對Windows有的版本不支持(比如win7),完美支持Linux
實現過程:
終端的字元顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關。
轉義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進位表示是27,用八進位表示就是033)。
格式:
開頭部分:\033[顯示方式;前景色;背景色m + 結尾部分:\033[0m
註意:開頭部分的三個參數:顯示方式,前景色,背景色是可選參數,可以只寫其中的某一個;另外由於表示三個參數不同含義的數值都是唯一的沒有重覆的,所以三個參數的書寫先後順序沒有固定要求,系統都能識別;但是,建議按照預設的格式規範書寫。 對於結尾部分,其實也可以省略,但是為了書寫規範,建議\033[***開頭,\033[0m結尾。 用這種原生的轉義序列輸出,在linux下完全支持,但是在windows下確存在相容問題,比如在win10下可以正常顯示顏色,在win7下確不支持。因此可以使用python標準庫提供的colorama模塊輸出彩色字體,這個模塊是跨平臺的,內部實現也是採用轉義序列來顯示顏色的,只不過對windows平臺做了特殊處理,因此完全相容linux和windows各個版本。 數值參數表示的意義: 說明:前景色 | 背景色 | 顏色 |
30 | 40 | 黑色 |
31 | 41 | 紅色 |
32 | 42 | 綠色 |
33 | 43 | 黃色 |
34 | 44 | 藍色 |
35 | 45 | 紫紅色 |
36 | 46 | 青藍色 |
37 | 47 | 白色 |
顯示方式:
顯示方式 | 意義 |
0 | 終端預設設置 |
1 | 高亮顯示 |
4 | 使用下劃線 |
5 | 閃爍 |
7 | 反白顯示 |
8 | 不可見 |
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 # @Time : 2018/4/29 10:27 4 # @Author : yang 5 # @File : Colored_Escape_character.py 6 # @Software: PyCharm 7 #-------------------------------- 8 #顯示格式:\033[顯示方式;前景色;背景色m 9 #-------------------------------- 10 #顯示方式 說明 11 # 0 終端預設設置 12 # 1 高亮顯示 13 # 4 使用下劃線 14 # 5 閃爍 15 # 7 反白顯示 16 # 8 不可見 17 # 22 非粗體 18 # 24 非下劃線 19 # 25 非閃爍 20 # 21 #前景色 背景色 顏色 22 # 30 40 黑色 23 # 31 41 紅色 24 # 32 42 綠色 25 # 33 43 黃色 26 # 34 44 藍色 27 # 35 45 紫紅色 28 # 36 46 青藍色 29 # 37 47 白色 30 #--------------------------------------- 31 class Colored(object): 32 RED = '\033[31m' #紅色 33 GREEN = '\033[32m' #綠色 34 YELLOW = '\033[33m' #黃色 35 BLUE = '\033[34m' #藍色 36 FUCHSIA = '\033[35m' #紫紅色 37 CYAN = '\033[36m' #青藍色 38 WHITE = '\033[37m' #白色 39 #:no color 40 RESET = '\033[0m' #終端預設顏色 41 def color_str(self,color,s): 42 return '{}{}{}'.format(getattr(self,color),s,self.RESET) 43 44 def red(self,s): 45 return self.color_str('RED',s) 46 def green(self,s): 47 return self.color_str('GREEN',s) 48 def yellow(self,s): 49 return self.color_str('YELLOW',s) 50 def blue(self,s): 51 return self.color_str('BLUE',s) 52 def fuchsia(self,s): 53 return self.color_str('FUCHSIA',s) 54 def cyan(self,s): 55 return self.color_str('CYAN',s) 56 def white(self,s): 57 return self.color_str('WHITE',s) 58 #-----------使用示例如下-------- 59 color = Colored() 60 print(color.red('I am red!')) 61 print(color.green('I am green!')) 62 print(color.yellow('I am yellow!')) 63 print(color.blue('I am blue!')) 64 print(color.fuchsia('I am fuchsia!')) 65 print(color.cyan('I am cyan!')) 66 print(color.white('I am white!'))
輸出結果:
2、採用Python標準庫colorama模塊--相容linux和windows各個版本:
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 # @Time : 2018/4/29 10:57 4 # @Author : yang 5 # @File : Colored_Colorama_module.py 6 # @Software: PyCharm 7 #--------------colorama模塊的一些常量------- 8 #colorama是一個python專門用來在控制台、命令行輸出彩色文字的模塊,可以跨平臺使用 9 # 在windows下linux下都工作良好,如果你想讓控制台的輸出信息更漂亮一些,可以使用給這個模塊。 10 # Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET. 11 # Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET. 12 # Style: DIM, NORMAL, BRIGHT, RESET_ALL 13 from colorama import init,Fore,Back,Style 14 #init(autoreset=True) 15 class Colored(object): 16 def red(self,s): 17 return Fore.RED + s + Fore.RESET 18 def green(self,s): 19 return Fore.GREEN + s + Fore.RESET 20 def yellow(self,s): 21 return Fore.YELLOW + s + Fore.RESET 22 def blue(self,s): 23 return Fore.BLUE + s + Fore.RESET 24 def magenta(self,s): 25 return Fore.MAGENTA + s + Fore.RESET 26 def cyan(self,s): 27 return Fore.CYAN + s + Fore.RESET 28 def white(self,s): 29 return Fore.WHITE + s + Fore.RESET 30 def balck(self,s): 31 return Fore.BLACK 32 def white_green(self,s): 33 return Fore.WHITE + Back.GREEN + s + Fore.RESET + Back.RESET 34 color = Colored() 35 print(color.red('I am red!')) 36 print(color.green('I am green!')) 37 print(color.yellow('I am yellow!')) 38 print(color.blue('I am blue!')) 39 print(color.magenta('I am magenta!')) 40 print(color.cyan('I am cyan!')) 41 print(color.white('I am white!')) 42 print(color.white_green('I am white green!'))
輸出結果: