網站首頁 編程語言 正文
一、前言
構建命令行程序很酷:命令行可以按照我們的設定完成相應的工作,相比 GUI 界面程序,無需花費大量時間設計 GUI 界面。但要使命令行程序更吸引人,僅使用普通的打印功能是無法實現的。
一個很好的方案是使用 colorama 庫。這使我們可以非常輕松地為終端上輸出的字符串著色,并且改善程序的界面外觀。
閑話少說,接下來讓我們看看如何使用它吧!
終端的字符顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關。轉義序列是以 ESC 開頭,即用 \033 來完成(ESC的 ASCII 碼用十進制表示是27,用八進制表示就是033
)。
書寫格式:
- 開頭部分:\033[顯示方式;前景色;背景色m + 結尾部分:\033[0m
- 注意:開頭部分的三個參數:顯示方式,前景色,背景色是可選參數,可以只寫其中的某一個;另外由于表示三個參數不同含義的數值都是唯一的沒有重復的,所以三個參數的書寫先后順序沒有固定要求,系統都能識別;但是,建議按照默認的格式規范書寫。
- 對于結尾部分:其實也可以省略,但是為了書寫規范,建議\033[***開頭,\033[0m結尾。
數值表示的參數含義:
- 顯示方式: 0(默認值)、1(高亮)、22(非粗體)、3(斜體)、4(下劃線)、24(非下劃線)、 5(閃爍)、25(非閃爍)、7(反顯)、27(非反顯)
- 前景色(字體的顏色): 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋 紅)、36(青色)、37(白色)
- 背景色:40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍色)、45(洋 紅)、46(青色)、47(白色)
二、print彩色打印
舉例來說,字符串 \033[31m 代表紅色打印,字符串 \033[0m 被用來將終端的顏色設置為標準的默認色(通常為黑色)。樣例代碼如下:
begin_color = '\033[1;31m' end_color = '\033[0m' print(begin_color + "人生苦短,我用Python!" + end_color) print("人生苦短,我用Python!")
你可以對應顯示方式、前景色(字體顏色)、背景色來靈活設置。根據自己的需求,把常用的封裝起來,用的時候直接調用就更方便了。
class printColors: RED = "\033[1;31m" # 紅色 RED_3 = "\033[4;31m" # 紅色 帶下劃線 PURPLE = "\033[1;35m" # 紫色 CYAN = "\033[1;36m" # 青藍色 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 庫
Python中還可以使用 Colorama 庫來改變終端輸出文字的顏色,亮度和背景。
Colorama Pypi
這個庫背后的實現原理也非常簡單,它使用 ANSA 轉義字符序列。當終端讀取這些序列之一時,它并不會輸出。當終端被指示為下一個輸出時它采用之前設定的顏色進行相應的輸出。
首先是安裝,使用 pip 直接進行安裝,命令行如下:
pip install colorama -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安裝完成后,接著我們可以開始實踐了。在代碼開頭添加以下初始化代碼是一種很好的編程寫法(這用于確保 Windows 命令行正確處理 ANSA字符串序列。否則,它只會打印出字符序列):
如果您使用的是其他操作系統,此時 init() 函數將什么事情也不做,但是建議大家仍應該將其顯式放入我們的程序中,以確保我們的程序可以在任何平臺上正常工作。
現在我們可以開始來使用這個庫了。主要分為三個子類:
- Fore:用于改變輸出文本的顏色;
- Style:用于改變輸出文本的亮度;
- Back:用于改變輸出文本的背景(即突出顯示文本)。
接著我們可以從改變文本的顏色開始,Colorama允許我們使用 8 8 8 種不同的顏色:黑色(black)、紅色(red)、綠色(green)、黃色(yellow)、藍色(blue)、洋紅色(magenta)、青色(cyan)、白色(white)。它們在 Fore 類中作為變量實現。他們的名字就是顏色的名字,全部大寫。例如:
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!') # 回歸初始
上述代碼很容易實現,正如我們看到的,我們還使用了另一個變量RESET,這主要用于恢復文本的原始顏色。
接下來我們將介紹的類為Back, 它實現了與 Fore 類相同的九個關鍵字:BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、RESET。
此時在這種背景下,設置的顏色將用于更改輸出文本的背景(即突出顯示文本)。舉例如下:
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 類來改變輸出文本的亮度。該子類含有以下三個主要的關鍵字:
- BRIGHT:使得輸出文本變亮
- DIM:使得輸出的文本變暗(盡管它看起來與普通文本相同)
- NORMAL:是的輸出的文本變成正常的亮度
簡單舉例如下:
from colorama import Style, init init() print('人生苦短,我用Python!') print(Style.BRIGHT + '人生苦短,我用Python!') print(Style.DIM + '人生苦短,我用Python!')
參考了:
Python中終端彩色打印輸出
Python終端如何輸出彩色字體
Python終端打印帶顏色的print
在終端中輸出彩色文字
原文鏈接:https://blog.csdn.net/fyfugoyfa/article/details/122778172
相關推薦
- 2023-02-25 go-micro微服務domain層開發示例詳解_Golang
- 2023-04-27 解讀react的onClick自動觸發等相關問題_React
- 2023-07-08 前端使用FileReader讀中文會亂碼
- 2022-07-30 golang?redis中Pipeline通道的使用詳解_Golang
- 2022-03-28 用python實現九九乘法表實例_python
- 2022-05-22 Virtualbox?安裝?docker的流程分析_VirtualBox
- 2023-05-22 PyTorch小功能之TensorDataset解讀_python
- 2022-07-01 c++超細致講解引用_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支