最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Python中使用colorama庫(kù)給輸出添加顏色

 更新時(shí)間:2026年04月30日 08:23:59   作者:傻啦嘿喲  
文章介紹了colorama庫(kù),這是一個(gè)用于Python的命令行彩色打印的簡(jiǎn)單庫(kù),它可以幫助用戶輕松地實(shí)現(xiàn)彩色的打印效果,使輸出結(jié)果更加清晰易讀,文章還詳細(xì)介紹了如何使用colorama庫(kù),包括基本用法、高級(jí)技巧、潛在問(wèn)題和其他需要注意的點(diǎn),需要的朋友可以參考下

小張最近遇到一件不大不小的事。他寫了一個(gè)簡(jiǎn)單的登錄測(cè)試腳本,用來(lái)幫同事驗(yàn)證一批用戶的賬號(hào)密碼是否可用。腳本跑起來(lái)很快,刷刷刷一行行結(jié)果往外蹦,“成功”“失敗”“成功”“失敗”……幾十行看下來(lái),他根本看不清哪些失敗了。每次都要在長(zhǎng)長(zhǎng)的輸出里一行行找“失敗”兩個(gè)字。

同事建議他試試colorama這個(gè)庫(kù)。能讓成功顯示成綠色,失敗顯示成紅色,一眼就能看出來(lái)問(wèn)題出在哪。

colorama是誰(shuí)?為什么需要它?

colorama是一個(gè)極其簡(jiǎn)單的Python第三方庫(kù),核心就干一件事:讓你的命令行打印出彩色的字。它不需要依賴任何別的庫(kù),裝上去就能用。

“命令行這不一直支持顏色嗎?”你可能會(huì)問(wèn)。問(wèn)題沒(méi)這么簡(jiǎn)單。

Linux和Mac的終端天生支持顏色,直接在字符串里加幾個(gè)特殊轉(zhuǎn)義符就行。但在Windows的命令提示符和舊版PowerShell里,你不做點(diǎn)什么,這些轉(zhuǎn)義字符直接原樣輸出給你看——屏幕上出現(xiàn)一堆像\033[31msome red text這樣亂七八糟的東西,而不是紅色的文字。

colorama的價(jià)值就在這里。它幫你自動(dòng)識(shí)別你用的是什么系統(tǒng)。Windows用戶調(diào)用一下初始化,colorama會(huì)自動(dòng)把顏色代碼轉(zhuǎn)換成合適的Win32 API調(diào)用;你代碼不用動(dòng),在Linux、Mac和Windows上都能正常顯示顏色。你只用寫一套代碼,到處都能跑出漂亮的效果。

安裝它,只需要一行:

pip install colorama 

跨平臺(tái)的兼容性,colorama支持的Python版本也覆蓋得很全:3.9、3.10、3.11、3.12、3.13,還有PyPy 3.11都在支持范圍內(nèi)。版本0.4.6之后對(duì)Python 3.12的兼容性也都完善了。

最簡(jiǎn)單的用法:Fore, Back, Style

colorama提供了三個(gè)核心類:

  • Fore:控制文字的顏色
  • Back:控制文字的背景色
  • Style:控制文字的樣式(加粗、變暗、高亮等)

舉個(gè)最簡(jiǎn)單的例子,你要打印一個(gè)字“小紅”,讓他顯示成紅色的:

from colorama import init, Fore, Back, Style
init()
print(Fore.RED + "hello, red world")
print(Back.GREEN + "這是綠色的背景")
print(Style.BRIGHT + "這是高亮/加粗的文字")

這里可以看到一個(gè)小細(xì)節(jié),Fore.RED、Back.GREEN這些常量本質(zhì)上是一些“控制代碼”的包裝。把它們和普通字符串用+拼接在一起,然后再傳給print()去打印,終端遇到這些代碼時(shí)就知道“紅色文字從這里開始”。但所有顏色常量都要用英文大寫來(lái)寫。

顏色做完別忘了關(guān)燈:你可能會(huì)踩的坑

你可能會(huì)想當(dāng)然地以為,上面印完Fore.RED + "hello"之后,再打一句print("world")會(huì)自動(dòng)恢復(fù)默認(rèn)。但現(xiàn)實(shí)是很無(wú)情的。如果你直接敲進(jìn)命令行,你會(huì)發(fā)現(xiàn)后面的文字依然是紅色的。因?yàn)樵诮K端看來(lái),cmd.exe不是聰明人,你不說(shuō)停止它就永遠(yuǎn)保持幫你設(shè)的那個(gè)顏色參數(shù)。

print(Fore.RED + "這段話是紅色的")
print("這段話也偷偷變成奇怪的顏色了??")

第二個(gè)print會(huì)繼承上一個(gè)print設(shè)置的狀態(tài),輸出也是紅色的。你可能會(huì)覺(jué)得這樣還行,用紅色記錄警告,但下一條可讀性就很差了。更麻煩的是,你正在編寫的復(fù)雜項(xiàng)目中可能會(huì)不小心讓異常報(bào)錯(cuò)也跟著變成全紅,大大降低代碼查閱的愉悅感。這時(shí)候你需要做一件事:強(qiáng)制把顏色恢復(fù)回來(lái)。

手動(dòng)重置顏色的方式是:

print(Fore.RED + "紅色的文字" + Fore.RESET)
print("現(xiàn)在恢復(fù)正常顏色了")

不過(guò)這只重置了前景的顏色,背景色和亮度風(fēng)格還沒(méi)回去,保險(xiǎn)一些的完全重置要靠Style.RESET_ALL。

但代碼里到處加+ Style.RESET_ALL很累人。更省力的辦法用到init(autoreset=True)

from colorama import init, Fore
init(autoreset=True)
print(Fore.RED + "紅色的文字")
print("自動(dòng)恢復(fù)默認(rèn)顏色,不用操心")

設(shè)置里autoreset=True意味著每行內(nèi)所有顏色變化在call最后一步時(shí)都會(huì)自動(dòng)執(zhí)行重置命令,不干擾后面的代碼。

實(shí)戰(zhàn)例子:讓登錄日志“一目了然”

回到小張的登錄測(cè)試腳本。原來(lái)的版本是這樣的:

results = [
    ("user1", "登錄成功"),
    ("user2", "登錄失敗 - 密碼錯(cuò)誤"),
    ("user3", "登錄成功"),
    ("user4", "登錄成功"),
    ("user5", "登錄失敗 - 賬戶鎖定"),
]
for user, status in results:
    print(f"{user}: {status}")

在色彩的世界里,我們可以改寫東西:

from colorama import init, Fore
init(autoreset=True)
for user, status in results:
    if "成功" in status:
        color = Fore.GREEN
    else:
        color = Fore.RED
    print(f"{user}: {color}{status}")

這么一改,輸出調(diào)試瞬間一目了然。init(autoreset=True)確保每個(gè)print內(nèi)部的顏色設(shè)定不會(huì)影響到下一行,后方的不同行不會(huì)意外變色了。

假如一段log同時(shí)用到前景、背景和高亮加粗,可以組合顏色樣式可以:

print(Fore.YELLOW + Back.BLUE + Style.BRIGHT + "關(guān)鍵日志" + Style.RESET_ALL)
print("后續(xù)執(zhí)行指令恢復(fù)了")

這種組合可以產(chǎn)生醒目的提醒旗幟,讓系統(tǒng)日志在復(fù)雜調(diào)試?yán)镆荒苛巳弧?/p>

從頭到腳說(shuō)完整個(gè)顏色表

colorama支持的全部顏色在這里:

  • 紅色、綠色、黃色、藍(lán)色
  • 洋紅色(MAGENTA)、青色(CYAN)、白色、黑色
  • 保留預(yù)設(shè)的顏色變淡的DEFAULT(還原回系統(tǒng)默認(rèn))

前景色(Fore): Fore.RED, Fore.GREEN, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN, Fore.WHITE, Fore.BLACK 背景色(Back): 對(duì)應(yīng)紅/綠/黃/藍(lán)/洋紅/青/白/黑等8種顏色 文字樣式(Style): Style.DIM(變暗), Style.NORMAL(常規(guī)), Style.BRIGHT(高亮/加粗)

大部分普通應(yīng)用只需要這三種,8種顏色已經(jīng)足夠滿足八成場(chǎng)景的需求。

進(jìn)階技巧:高亮特定單詞

你也可能只想把句子里的某個(gè)關(guān)鍵單詞特殊標(biāo)記。比如一行錯(cuò)誤日志,只把“ERROR”涂紅,其余文字保持默認(rèn)。

實(shí)現(xiàn)這種局部著色有很多手段。假定有一個(gè)固定詞需要高亮,可以用replace()把目標(biāo)詞包上顏色控制符:

from colorama import init, Fore
init(autoreset=True)
def highlight_word(text, word, color):
    colored_word = color + word + Fore.RESET
    return text.replace(word, colored_word)
log = "ERROR: Here comes some problem about file path"
print(highlight_word(log, "ERROR", Fore.RED))

這樣實(shí)現(xiàn)起來(lái)代碼干凈,也好維護(hù)。

使用colorama沒(méi)有正確初始化??jī)煞N通用做法

前面提到終端的彩色打印需要調(diào)用init()。關(guān)于初始化的調(diào)用方式,有兩個(gè)主流用法:

  1. init(autoreset=True):適合不想手動(dòng)多次Reset的情況,每次顏色都會(huì)有效分隔開;
  2. init(convert=True, autoreset=True):顯式打開ANSI轉(zhuǎn)Win32轉(zhuǎn)換,對(duì)某些老舊Windows環(huán)境更可靠。

其實(shí)在較新的colorama 0.4.6版本中,init()會(huì)自動(dòng)檢測(cè)系統(tǒng)環(huán)境,在大部分情況下直接init(autoreset=True)就夠用了。

但在公司復(fù)雜的內(nèi)部環(huán)境(非標(biāo)準(zhǔn)IDE的嵌入式終端)或者服務(wù)器集群測(cè)試情況下,有時(shí)色彩依然出不來(lái)的癥狀,可以試試一個(gè)更健壯的初始化方法——使用just_fix_windows_console()函數(shù),專門解決Windows終端顏色穿透問(wèn)題。這個(gè)函數(shù)比舊版的init()更可靠。

一個(gè)漂亮的控制臺(tái)進(jìn)度條

命令行工具繞不開的一個(gè)功能就是進(jìn)度條。一個(gè)傳統(tǒng)的進(jìn)度條往往蒼白無(wú)趣,但配合colorama,你可以把進(jìn)度條打扮得專業(yè)又不刺眼:

import time
from colorama import init, Fore, Style
init(autoreset=True)
def colored_progress_bar(percent):
    bar_length = 50
    filled = int(bar_length * percent)
    if percent < 0.3:
        bar_color = Fore.RED
    elif percent < 0.7:
        bar_color = Fore.YELLOW
    else:
        bar_color = Fore.GREEN
    bar = '█' * filled + '-' * (bar_length - filled)
    print(f"\r進(jìn)度:[{bar_color}{bar}{Style.RESET_ALL}] {percent*100:.1f}%", end="", flush=True)
for i in range(101):
    colored_progress_bar(i/100)
    time.sleep(0.05)
print()

如果制作更復(fù)雜的色彩主題,還可以通過(guò)Python的類封裝來(lái)統(tǒng)一管理。

高級(jí)整合:Colorama不要單打獨(dú)斗

有的項(xiàng)目打印內(nèi)容復(fù)雜、組合靈活,想要各種前置方便切換時(shí)可能會(huì)想:如果每一個(gè)print前面都要加Fore.RED、Back.CYAN、Style.BRIGHT這么多代碼,好復(fù)雜。其實(shí)完全可以coloramatermcolor一起工作。先初始化colorama讓它保障跨平臺(tái)轉(zhuǎn)換,再用termcolor.colored()簡(jiǎn)化色彩定義:

from colorama import init
init()
from termcolor import colored
print(colored('出錯(cuò)了!', 'red', 'on_white', attrs=['reverse']))

簡(jiǎn)簡(jiǎn)單單。colorama像是一個(gè)翻譯器,專門負(fù)責(zé)在Windows系統(tǒng)內(nèi)消化Windows看不懂的ANSI指令。高級(jí)樣式包裝可以按組合招來(lái),為彩色文本帶來(lái)動(dòng)態(tài)視覺(jué)感。

當(dāng)顏色真的出不來(lái)了:快速排查指南

可能在某個(gè)環(huán)境下你的代碼意外輸出了[31m文字,而不是彩色內(nèi)容。直接排查思路:

  1. **檢查是否調(diào)用了init()**:init(autoreset=True)這一行得寫在所有打印顏色之前
  2. 升級(jí)colorama:有些環(huán)境太舊的話用pip install --upgrade colorama解決
  3. 手動(dòng)檢測(cè)終端交互的限制:在某些純文本重定向場(chǎng)景,顏色代碼會(huì)被系統(tǒng)扔掉。用sys.stdout.isatty()檢測(cè)當(dāng)前是否終端環(huán)境
  4. 確認(rèn)不是特殊IDE限制:有的IDE集成了對(duì)ANSI支持的設(shè)置需要手動(dòng)開啟
  5. 用直接方法驗(yàn)證兼容性:試運(yùn)行非常簡(jiǎn)單的print(Fore.RED + "測(cè)試" + Style.RESET_ALL),看終端支不支持
  6. 跨平臺(tái)注意:某些Windows的PowerShell 5.1等舊版本需要用戶手動(dòng)啟用ANSI支持
  7. 換兼容的現(xiàn)代終端:如果是Windows建議使用Windows Terminal、Visual Studio Code的內(nèi)建終端,它們對(duì)ANSI原生支持的認(rèn)可度極高。

代碼入庫(kù)的適用場(chǎng)合

colorama就像你的老朋友一樣小巧玲瓏。推薦它用在簡(jiǎn)單腳本里、監(jiān)控日志明顯標(biāo)記時(shí),任何需要從大量輸出里快速提取關(guān)鍵信息的地方都值得用起來(lái)。簡(jiǎn)潔的管理方法,明確的自定義顏色方案,讓測(cè)試和調(diào)試事半功倍。追求更高級(jí)效果——例如渲染表格、實(shí)時(shí)進(jìn)度條、終端圖表——可以嘗試rich這種豐富庫(kù),但在大部分彩色場(chǎng)景和跨平臺(tái)潤(rùn)色上,我還是愿意選干干凈凈的colorama。

本質(zhì)上colorama的核心理念是:讓色彩不干擾你的邏輯,而你的邏輯不再被無(wú)色彩的“失敗的搜索”淹沒(méi)在沉默里。給字符串加點(diǎn)顏色是小事,但正是這些小事的積累,讓終端上的交互和問(wèn)題追蹤變得直觀而優(yōu)雅。

小張搞明白了以后,跑去跟領(lǐng)導(dǎo)演示新版本的登錄測(cè)試腳本運(yùn)行結(jié)果。紅色的“失敗”大老遠(yuǎn)就能看到,綠色的“成功”如同一串綠燈順利跑完。領(lǐng)導(dǎo)說(shuō)了一個(gè)字:好。

以上就是在Python中使用colorama庫(kù)給輸出添加顏色的詳細(xì)內(nèi)容,更多關(guān)于Python colorama輸出添加顏色的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • simple-pytest?框架使用教程

    simple-pytest?框架使用教程

    simple-pytest框架主要參考了httprunner的yaml數(shù)據(jù)驅(qū)動(dòng)部分設(shè)計(jì)思路,是基于Pytest?+?Pytest-html+?Log?+?Yaml?+?Mysql?實(shí)現(xiàn)的簡(jiǎn)易版接口自動(dòng)化框架,這篇文章主要介紹了simple-pytest?框架使用指南,需要的朋友可以參考下
    2024-02-02
  • Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換你了解嗎

    Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Python導(dǎo)入不同文件夾中文件的方法詳解

    Python導(dǎo)入不同文件夾中文件的方法詳解

    在寫python程序的時(shí)候,經(jīng)常會(huì)用到引入其他文件夾里的py文件,下面這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入不同文件夾中文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • TensorFlow神經(jīng)網(wǎng)絡(luò)構(gòu)造線性回歸模型示例教程

    TensorFlow神經(jīng)網(wǎng)絡(luò)構(gòu)造線性回歸模型示例教程

    這篇文章主要為大家介紹了TensorFlow構(gòu)造線性回歸模型示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python進(jìn)階學(xué)習(xí)實(shí)時(shí)目標(biāo)跟蹤示例詳解

    python進(jìn)階學(xué)習(xí)實(shí)時(shí)目標(biāo)跟蹤示例詳解

    這篇文章主要為大家介紹了python進(jìn)階學(xué)習(xí)實(shí)時(shí)目標(biāo)跟蹤示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 基于Python的OCR實(shí)現(xiàn)示例

    基于Python的OCR實(shí)現(xiàn)示例

    這篇文章主要介紹了基于Python的OCR實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • PyQt5使用QTimer實(shí)現(xiàn)電子時(shí)鐘

    PyQt5使用QTimer實(shí)現(xiàn)電子時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了PyQt5使用QTimer實(shí)現(xiàn)電子時(shí)鐘,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python運(yùn)算符號(hào)詳細(xì)介紹

    python運(yùn)算符號(hào)詳細(xì)介紹

    大家好,本篇文章主要講的是python運(yùn)算符號(hào)詳細(xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python Pillow(PIL)庫(kù)的用法詳解

    Python Pillow(PIL)庫(kù)的用法詳解

    這篇文章主要介紹了Python Pillow(PIL)庫(kù)的用法介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化eNSP

    Python實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化eNSP

    這篇文章主要介紹了Python實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化eNSP,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論

万年县| 山西省| 百色市| 贺州市| 杭锦后旗| 武宣县| 鄢陵县| 宣武区| 平山县| 辽中县| 和田县| 威信县| 寿阳县| 旬阳县| 五台县| 阿瓦提县| 潼关县| 平昌县| 余江县| 云林县| 九台市| 古蔺县| 翼城县| 贺州市| 玉门市| 汝州市| 滁州市| 循化| 赞皇县| 瑞昌市| 精河县| 德州市| 塔城市| 清原| 石棉县| 吉隆县| 正安县| 阿克苏市| 宣城市| 毕节市| 新兴县|