Python?colorama?彩色打印實(shí)現(xiàn)代碼
一、前言
構(gòu)建命令行程序很酷:命令行可以按照我們的設(shè)定完成相應(yīng)的工作,相比 GUI 界面程序,無(wú)需花費(fèi)大量時(shí)間設(shè)計(jì) GUI 界面。但要使命令行程序更吸引人,僅使用普通的打印功能是無(wú)法實(shí)現(xiàn)的。
一個(gè)很好的方案是使用 colorama 庫(kù)。這使我們可以非常輕松地為終端上輸出的字符串著色,并且改善程序的界面外觀(guān)。
閑話(huà)少說(shuō),接下來(lái)讓我們看看如何使用它吧!
終端的字符顏色是用轉(zhuǎn)義序列控制的,是文本模式下的系統(tǒng)顯示功能,和具體的語(yǔ)言無(wú)關(guān)。轉(zhuǎn)義序列是以 ESC 開(kāi)頭,即用 \033 來(lái)完成(ESC的 ASCII 碼用十進(jìn)制表示是27,用八進(jìn)制表示就是033
)。
書(shū)寫(xiě)格式:
- 開(kāi)頭部分:\033[顯示方式;前景色;背景色m + 結(jié)尾部分:\033[0m
- 注意:開(kāi)頭部分的三個(gè)參數(shù):顯示方式,前景色,背景色是可選參數(shù),可以只寫(xiě)其中的某一個(gè);另外由于表示三個(gè)參數(shù)不同含義的數(shù)值都是唯一的沒(méi)有重復(fù)的,所以三個(gè)參數(shù)的書(shū)寫(xiě)先后順序沒(méi)有固定要求,系統(tǒng)都能識(shí)別;但是,建議按照默認(rèn)的格式規(guī)范書(shū)寫(xiě)。
- 對(duì)于結(jié)尾部分:其實(shí)也可以省略,但是為了書(shū)寫(xiě)規(guī)范,建議\033[***開(kāi)頭,\033[0m結(jié)尾。
數(shù)值表示的參數(shù)含義:
- 顯示方式: 0(默認(rèn)值)、1(高亮)、22(非粗體)、3(斜體)、4(下劃線(xiàn))、24(非下劃線(xiàn))、 5(閃爍)、25(非閃爍)、7(反顯)、27(非反顯)
- 前景色(字體的顏色): 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍(lán)色)、35(洋 紅)、36(青色)、37(白色)
- 背景色:40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍(lán)色)、45(洋 紅)、46(青色)、47(白色)
二、print彩色打印
舉例來(lái)說(shuō),字符串 \033[31m 代表紅色打印,字符串 \033[0m 被用來(lái)將終端的顏色設(shè)置為標(biāo)準(zhǔn)的默認(rèn)色(通常為黑色)。樣例代碼如下:
begin_color = '\033[1;31m' end_color = '\033[0m' print(begin_color + "人生苦短,我用Python!" + end_color) print("人生苦短,我用Python!")
你可以對(duì)應(yīng)顯示方式、前景色(字體顏色)、背景色來(lái)靈活設(shè)置。根據(jù)自己的需求,把常用的封裝起來(lái),用的時(shí)候直接調(diào)用就更方便了。
class printColors: RED = "\033[1;31m" # 紅色 RED_3 = "\033[4;31m" # 紅色 帶下劃線(xiàn) PURPLE = "\033[1;35m" # 紫色 CYAN = "\033[1;36m" # 青藍(lán)色 END = '\033[0m' print(":".join(["CSDN葉庭云", "https://yetingyun.blog.csdn.net/"])) print(printColors.CYAN + "人生苦短,我用Python!" + printColors.END) print(printColors.RED + "人生苦短,我用Python!" + printColors.END) print(printColors.RED_3 + "人生苦短,我用Python!" + printColors.END) print(printColors.PURPLE + "人生苦短,我用Python!" + printColors.END)
三、使用 Colorama 庫(kù)
Python中還可以使用 Colorama 庫(kù)來(lái)改變終端輸出文字的顏色,亮度和背景。
這個(gè)庫(kù)背后的實(shí)現(xiàn)原理也非常簡(jiǎn)單,它使用 ANSA 轉(zhuǎn)義字符序列。當(dāng)終端讀取這些序列之一時(shí),它并不會(huì)輸出。當(dāng)終端被指示為下一個(gè)輸出時(shí)它采用之前設(shè)定的顏色進(jìn)行相應(yīng)的輸出。
首先是安裝,使用 pip 直接進(jìn)行安裝,命令行如下:
pip install colorama -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安裝完成后,接著我們可以開(kāi)始實(shí)踐了。在代碼開(kāi)頭添加以下初始化代碼是一種很好的編程寫(xiě)法(這用于確保 Windows 命令行正確處理 ANSA字符串序列。否則,它只會(huì)打印出字符序列):
如果您使用的是其他操作系統(tǒng),此時(shí) init() 函數(shù)將什么事情也不做,但是建議大家仍應(yīng)該將其顯式放入我們的程序中,以確保我們的程序可以在任何平臺(tái)上正常工作。
現(xiàn)在我們可以開(kāi)始來(lái)使用這個(gè)庫(kù)了。主要分為三個(gè)子類(lèi):
- Fore:用于改變輸出文本的顏色;
- Style:用于改變輸出文本的亮度;
- Back:用于改變輸出文本的背景(即突出顯示文本)。
接著我們可以從改變文本的顏色開(kāi)始,Colorama允許我們使用 8 8 8 種不同的顏色:黑色(black)、紅色(red)、綠色(green)、黃色(yellow)、藍(lán)色(blue)、洋紅色(magenta)、青色(cyan)、白色(white)。它們?cè)?Fore 類(lèi)中作為變量實(shí)現(xiàn)。他們的名字就是顏色的名字,全部大寫(xiě)。例如:
from colorama import Fore, init init() print('人生苦短,我用Python!') print(":".join(["CSDN葉庭云", "https://yetingyun.blog.csdn.net/"])) print(Fore.RED + '人生苦短,我用Python!') print(Fore.BLUE + '人生苦短,我用Python!') print(Fore.GREEN + '人生苦短,我用Python!') print(Fore.MAGENTA + '人生苦短,我用Python!') print(Fore.RESET + '人生苦短,我用Python!') # 回歸初始
上述代碼很容易實(shí)現(xiàn),正如我們看到的,我們還使用了另一個(gè)變量RESET,這主要用于恢復(fù)文本的原始顏色。
接下來(lái)我們將介紹的類(lèi)為Back, 它實(shí)現(xiàn)了與 Fore 類(lèi)相同的九個(gè)關(guān)鍵字:BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、RESET。
此時(shí)在這種背景下,設(shè)置的顏色將用于更改輸出文本的背景(即突出顯示文本)。舉例如下:
from colorama import Fore, Back, init init() print('人生苦短,我用Python!') print(":".join(["CSDN葉庭云", "https://yetingyun.blog.csdn.net/"])) print(Back.RED + '人生苦短,我用Python!') print(Back.BLUE + '人生苦短,我用Python!') print(Back.GREEN + '人生苦短,我用Python!') print(Back.MAGENTA + '人生苦短,我用Python!') print(Back.RESET + '人生苦短,我用Python!') # 回歸初始
最后,我們可以使用 Style 類(lèi)來(lái)改變輸出文本的亮度。該子類(lèi)含有以下三個(gè)主要的關(guān)鍵字:
- BRIGHT:使得輸出文本變亮
- DIM:使得輸出的文本變暗(盡管它看起來(lái)與普通文本相同)
- NORMAL:是的輸出的文本變成正常的亮度
簡(jiǎn)單舉例如下:
from colorama import Style, init init() print('人生苦短,我用Python!') print(Style.BRIGHT + '人生苦短,我用Python!') print(Style.DIM + '人生苦短,我用Python!')
參考了:
到此這篇關(guān)于Python colorama 彩色打印實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)Python colorama 彩色打印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬蟲(chóng)的兩套解析方法和四種爬蟲(chóng)實(shí)現(xiàn)過(guò)程
本文想針對(duì)某一網(wǎng)頁(yè)對(duì) python 基礎(chǔ)爬蟲(chóng)的兩大解析庫(kù)( BeautifulSoup 和 lxml )和幾種信息提取實(shí)現(xiàn)方法進(jìn)行分析,及同一網(wǎng)頁(yè)爬蟲(chóng)的四種實(shí)現(xiàn)方式,需要的朋友參考下吧2018-07-07django認(rèn)證系統(tǒng)實(shí)現(xiàn)自定義權(quán)限管理的方法
這篇文章主要介紹了django認(rèn)證系統(tǒng)實(shí)現(xiàn)自定義權(quán)限管理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07利用python解決mysql視圖導(dǎo)入導(dǎo)出依賴(lài)的問(wèn)題
這篇文章主要給大家介紹了關(guān)于利用python解決mysql視圖導(dǎo)入導(dǎo)出依賴(lài)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Python元編程聲明與初始化定制元類(lèi)實(shí)例探究
這篇文章主要為大家介紹了Python元編程聲明與初始化定制元類(lèi)實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01LeetCode百錢(qián)買(mǎi)百雞python遞歸解法示例
這篇文章主要為大家介紹了LeetCode百錢(qián)買(mǎi)百雞題目python遞歸解法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11