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

在Python中使用colorama庫給輸出添加顏色

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

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

同事建議他試試colorama這個庫。能讓成功顯示成綠色,失敗顯示成紅色,一眼就能看出來問題出在哪。

colorama是誰?為什么需要它?

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

“命令行這不一直支持顏色嗎?”你可能會問。問題沒這么簡單。

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

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

安裝它,只需要一行:

pip install colorama 

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

最簡單的用法:Fore, Back, Style

colorama提供了三個核心類:

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

舉個最簡單的例子,你要打印一個字“小紅”,讓他顯示成紅色的:

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

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

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

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

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

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

手動重置顏色的方式是:

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

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

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

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

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

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

回到小張的登錄測試腳本。原來的版本是這樣的:

results = [
    ("user1", "登錄成功"),
    ("user2", "登錄失敗 - 密碼錯誤"),
    ("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)確保每個print內(nèi)部的顏色設(shè)定不會影響到下一行,后方的不同行不會意外變色了。

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

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>

從頭到腳說完整個顏色表

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): 對應(yīng)紅/綠/黃/藍(lán)/洋紅/青/白/黑等8種顏色 文字樣式(Style): Style.DIM(變暗), Style.NORMAL(常規(guī)), Style.BRIGHT(高亮/加粗)

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

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

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

實(shí)現(xiàn)這種局部著色有很多手段。假定有一個固定詞需要高亮,可以用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)起來代碼干凈,也好維護(hù)。

使用colorama沒有正確初始化?兩種通用做法

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

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

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

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

一個漂亮的控制臺進(jìn)度條

命令行工具繞不開的一個功能就是進(jìn)度條。一個傳統(tǒng)的進(jìn)度條往往蒼白無趣,但配合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ù)雜的色彩主題,還可以通過Python的類封裝來統(tǒng)一管理。

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

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

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

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

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

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

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

代碼入庫的適用場合

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

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

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

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

相關(guān)文章

  • simple-pytest?框架使用教程

    simple-pytest?框架使用教程

    simple-pytest框架主要參考了httprunner的yaml數(shù)據(jù)驅(qū)動部分設(shè)計思路,是基于Pytest?+?Pytest-html+?Log?+?Yaml?+?Mysql?實(shí)現(xiàn)的簡易版接口自動化框架,這篇文章主要介紹了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ì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python導(dǎo)入不同文件夾中文件的方法詳解

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

    在寫python程序的時候,經(jīng)常會用到引入其他文件夾里的py文件,下面這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入不同文件夾中文件的相關(guān)資料,文中通過實(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í)時目標(biāo)跟蹤示例詳解

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

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

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

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

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

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

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

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

    Python Pillow(PIL)庫的用法詳解

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

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

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

最新評論

济宁市| 遵化市| 获嘉县| 东海县| 南和县| 进贤县| 宁武县| 原阳县| 太谷县| 田林县| 石河子市| 西和县| 宜丰县| 博兴县| 夹江县| 温泉县| 石景山区| 北票市| 巨鹿县| 建昌县| 西林县| 五莲县| 扶余县| 武宣县| 若羌县| 新密市| 哈巴河县| 浦北县| 裕民县| 西吉县| 安福县| 淳化县| 句容市| 虞城县| 名山县| 兴隆县| 阳城县| 乐业县| 永济市| 潞城市| SHOW|