利用Python來控制終端打印字體的顏色和格式
一、問題描述
使用python編程時,改變控制臺或終端中輸出字體的顏色和格式,會顯著提升代碼質(zhì)量,快速幫助我們定位問題和鎖定重要輸出。但是一般情況下,python控制臺輸出的字體默認(rèn)為白色。具體如下:

在控制臺打印很多相同的格式文字時,并不利于我們查找和定位想要的輸出。
二、ANSI轉(zhuǎn)義序列
下面簡單講一下ANSI轉(zhuǎn)義序列,這里不重復(fù)講述概念,想要了解ANSI轉(zhuǎn)義序列是什么意思,可自行查找。舉個簡單例子來說:
\033[31m是一個ANSI轉(zhuǎn)義序列,它告訴終端將后續(xù)文本的顏色設(shè)置為紅色;\033[0m是另外一個ANSI轉(zhuǎn)義序列,它告訴終端將后續(xù)文本的顏色重置為默認(rèn)顏色;
總之,ANSI 轉(zhuǎn)義序列是一種用于在控制臺中輸出格式化文本的標(biāo)準(zhǔn),它由一系列以 ESC 開頭的字符組成,后跟一個或多個參數(shù)和一個字母,以指示需要執(zhí)行的操作。常見的指令字母包括 m、H、J、K、s 和 u,常見的參數(shù)包括 0-8、30-37 和 40-47。
下面給出一些簡單的指令參數(shù):
| 指令字母 | 操作 |
|---|---|
| m | 設(shè)置文本屬性 |
| H | 設(shè)置光標(biāo)屬性 |
| J | 清除屏幕 |
| K | 清除行 |
| s | 保存光標(biāo)位置 |
| u | 恢復(fù)光標(biāo)位置 |
在參數(shù)中,分號用來分隔不同的參數(shù),常見的參數(shù)包括:
| 參數(shù) | 含義 |
|---|---|
| 0 | 關(guān)閉所有屬性 |
| 1 | 設(shè)置粗體 |
| 2 | 設(shè)置弱化(半亮) |
| 3 | 設(shè)置斜體 |
| 4 | 設(shè)置下劃線 |
| 5 | 設(shè)置閃爍(慎用) |
| 7 | 設(shè)置反顯 |
| 8 | 設(shè)置消隱 |
| 30-37 | 設(shè)置前景色(字體顏色) |
| 40-47 | 設(shè)置背景色 |
三、具體代碼和顯示效果(看懂這段代碼,以后可隨心控制字體的打印格式)
要在Python中打印特定的字體格式或顏色(控制臺,終端),可以通過上面的ANSI轉(zhuǎn)義序列來操作,下面給出設(shè)置前景色、設(shè)置背景色和設(shè)置顯示方法的幾種演示代碼和效果,具體代碼如下:
- 設(shè)置輸出的前景色代碼,也就是設(shè)置輸出的顯示字體代碼:
# 輸出前景色(字體顏色)
print('-----------------------------------------------------')
print('輸出前景色(字體顏色):')
print("\033[30m This text is foreground black.\033[0m")
print("\033[31m This text is foreground red.\033[0m")
print("\033[32m This text is foreground green.\033[0m")
print("\033[33m This text is foreground yellow.\033[0m")
print("\033[34m This text is foreground blue.\033[0m")
print("\033[35m This text is foreground magenta.\033[0m")
print("\033[36m This text is foreground cyan.\033[0m")
print("\033[37m This text is foreground white.\033[0m")
具體效果如下:

- 設(shè)置輸出的背景色代碼:
# 輸出背景色
print('-----------------------------------------------------')
print('輸出背景色:')
print("\033[40m This text is background black.\033[0m")
print("\033[41m This text is background pink-red.\033[0m")
print("\033[42m This text is background dark-green.\033[0m")
print("\033[43m This text is background yellow-red.\033[0m")
print("\033[44m This text is background light-blue.\033[0m")
print("\033[45m This text is background pink.\033[0m")
print("\033[46m This text is background light-green.\033[0m")
print("\033[47m This text is background grey color.\033[0m")
具體效果如下:

- 設(shè)置輸出的顯示方式代碼,具體如下:
# 輸出顯示方式
print('-----------------------------------------------------')
print(" This text is default.") # 默認(rèn)白色
print("\033[0m This text is default.\033[0m") # 默認(rèn)值
print("\033[1m This text is bold.\033[0m") # 加粗
print("\033[4m This text is underline.\033[0m") # 下劃線
print("\033[5m This text is flicker.\033[0m") # 閃爍
print("\033[7m This text is reverse display.\033[0m") # 反顯
# 前面加上2就是非XX
print("\033[22m This text is non bold.\033[0m") # 非粗體
print("\033[24m This text is non underline.\033[0m") # 非下劃線
print("\033[25m This text is non flicker.\033[0m") # 非閃爍
print("\033[7m This text is non reverse display.\033[0m") # 非反顯
具體效果如下:

其他的組合方式可以自行探索,通過組合不同的ANSI命令,即可獲得不同的顯示效果。
到此這篇關(guān)于利用Python來控制終端打印字體的顏色和格式的文章就介紹到這了,更多相關(guān)Python終端字體顏色和格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用PySimpleGUI設(shè)置進(jìn)度條及控件使用
PySimpleGUI是一個在tkinter基礎(chǔ)上的,足夠簡單,方便,pythonic的GUI庫.本文給大家介紹python使用PySimpleGUI設(shè)置進(jìn)度條的方法及進(jìn)度條控件使用代碼,感興趣的朋友跟隨小編一起看看吧2021-06-06
python 篩選數(shù)據(jù)集中列中value長度大于20的數(shù)據(jù)集方法
今天小編就為大家分享一篇python 篩選數(shù)據(jù)集中列中value長度大于20的數(shù)據(jù)集方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
詳細(xì)過程帶你用Python做車牌自動識別系統(tǒng)
這篇文章主要介紹了帶你用Python做車牌自動識別系統(tǒng)的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法
這篇文章主要介紹了詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
深入理解Python中的函數(shù)參數(shù)傳遞機(jī)制
在Python中,對于函數(shù)的參數(shù)傳遞,有兩種主要的方式:傳值和傳引用。事實上,Python的參數(shù)傳遞是一種“傳對象引用”的方式,本文呢我們將詳細(xì)介紹Python的函數(shù)參數(shù)傳遞機(jī)制,這對理解Python編程語言的底層實現(xiàn)以及優(yōu)化你的代碼都非常有幫助2023-07-07

