我們在使用python運維與開發的過程中,經常需要列印顯示各種資訊。海量的資訊堆砌在控制台中,就會導緻各種資訊都顯示在一起,降低了重要資訊的可讀性。這時候,如果能給重要的資訊加上差異的字型顔色,那麼就會更加顯眼,增加使用者可閱讀性。
以前看别人寫代碼總是出現"/033[1;31m..................../033[0m"類似出現,以為顔色輸出必須"/033[1;31m“開頭,” /033[0m" 結尾構成一組,其實不然。實際"/033[1;31m..................../033[0m"意思表示“....................“引号裡的内容顯示列印一種顔色,結尾如果有輸入的話顯示另外一種顔色列印。
例如我們先寫一個簡單的要求使用者輸入的例子來了解一下:

info = input("Please Introduce yourself: ")
print('\033[1;33mWe asked him to introduce himself first.He said \" %s .\"\033[3;31m' %info)
print('這行是上一行結尾的顔色輸出效果 ')
View Code
效果如圖:
如果隻需要一種顔色我們就可以簡單一點:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
print('\033[0m這是顯示方式0')
print('\033[1m這是顯示方式1')
print('\033[4m這是顯示方式4')
print('\033[5m這是顯示方式5')
print('\033[7m這是顯示方式7')
print('\033[8m這是顯示方式8')
print('\033[30m這是前景色0')
print('\033[31m這是前景色1')
print('\033[32m這是前景色2')
print('\033[33m這是前景色3')
print('\033[34m這是前景色4')
print('\033[35m這是前景色5')
print('\033[36m這是前景色6')
print('\033[37m這是前景色7')
print('\033[40m這是背景色0')
print('\033[41m這是背景色1')
print('\033[42m這是背景色2')
print('\033[43m這是背景色3')
print('\033[44m這是背景色4')
print('\033[45m這是背景色5')
print('\033[46m這是背景色6')
print('\033[47m這是背景色7')
Pytharm效果如圖:
書寫格式,和相關說明如下:
說明:
前景色 背景色 顔色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 洋紅
36 46 青色
37 47 白色
顯示方式 意義
----------------------------------
0 終端預設設定
1 高亮顯示
22 非高亮顯示
4 使用下劃線
24 去下劃線
5 閃爍
25 去閃爍
7 反白顯示
27 非反顯
8 不可見
28 可見
例:
\033[1;32;41m #---1-高亮顯示 32-前景色綠色 40-背景色紅色---
\033[0m #---采用終端預設設定,即預設顔色---
*具體格式*:
設定顔色開始 :\033[顯示方式;前景色;背景色m
注:';'前後的三個參數:顯示方式,前景色,背景色是可選參數,可以隻寫其中的某一個或者某兩個;由于表示三個參數不同含義的數值都是唯一沒有重複的,是以三個參數的書寫先後順序沒有固定要求,系統都可識别;
建議按照預設的格式規範書寫
實作過程:
終端的字元顔色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關。轉義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進制表示是27,用八進制表示就是033)。
數值表示的參數含義:
顯示方式: 0(
)、1(
)、22(
)、4(
)、24(
)、 5(
)、25(
)、7(
)、27(
)、8(
)、28(
)
前景色: 30(
)、31(
)、32(
)、 33(
)、34(
)、35(
)、36(
)、37(
背景色: 40(
)、41(
)、42(
)、 43(
)、44(
)、45(
)、46(
)、47(
執行個體
#!/usr/bin/env python
#-*- coding:utf-8 -*-
print('\033[1;31;40m') #下一目标輸出背景為黑色,顔色紅色高亮顯示
print('*' * 50)
print('\033[7;31m錯誤次數超限,使用者已被永久鎖定,請聯系管理者!\033[1;31;40m') #字型顔色紅色反白處理
print('*' * 50)
print('\033[0m')
效果