一个 print 函数,挺会玩啊?
超級無敵干貨,第一時間送達!!!
大家好,我是菜鳥哥。
在終端中,輸出的字體總是單一顏色的,黑底白字。但是在一些場景并不能很好的滿足輸出的需求,比如在大量而快速輸出中,輸出一些提示性或者警告性的信息,普通的黑底白字輸出可能或起不到作用。
本文將介紹如何輸出顏色字體到終端界面中。
#?1. ANSI 轉義序列
其實終端不僅能夠顯示程序的輸出。它可以顯示移動光標、為文本著色、清除整個屏幕,并且不僅僅是靜態輸出。比如顏色字體或者閃爍的光標或者是進度條。
我們通過使用特殊的輸出字符串改變終端的輸出行為,最簡單的例子便是換行這個例子:\n
#?2. 配色方案
有兩種配色方案廣泛應用于終端中:
16 色 (8 背景 + 8 前景)前景即是字體本身的顏色
255 色
?16 色
16色的配色方案包含兩個顏色設置,每個8色,一個是背景色一個是字體色(也即前景色),這個配色方案的語法格式如下:
首先舉一個例子 :
\033[1;32;40m
這里 \033[ 是轉義字符 1 代表高亮,32 代表前景色為綠色,背景色為黑色
輸出到終端則是這個效果:
轉義字符
轉義字符可以有三種形式
十六進制:\x16[
Unicode:\u001b[
八進制:\033[
樣式
這個樣式指的是字體的顯示樣式:
0(默認值)、1(高亮)、22(非粗體)
4(下劃線)、24(非下劃線)、 5(閃爍)
25(非閃爍)、7(反顯)、27(非反顯)
print('\033[0;32;40m這是一行測試字體\033[0m') print('\033[1;32;40m這是一行測試字體\033[0m') print('\033[22;32;40m這是一行測試字體\033[0m') print('\033[4;32;40m這是一行測試字體\033[0m') print('\033[24;32;40m這是一行測試字體\033[0m') print('\033[5;32;40m這是一行測試字體\033[0m') print('\033[25;32;40m這是一行測試字體\033[0m') print('\033[7;32;40m這是一行測試字體\033[0m') print('\033[27;32;40m這是一行測試字體\033[0m')具體效果看下面的動圖:
需要注意的是具體的效果可能收到使用的終端的限制,目前在CMD中輸出并不會被識別,但是在window terminal中是成功的輸出以上內容。
顏色設置
前景色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋 紅)、36(青色)、37(白色)
背景色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍色)、45(洋 紅)、46(青色)、47(白色)
前景色,即字體顏色的展示:
print('\033[1;30;40m這是一行黑色測試字體\033[0m') print('\033[1;31;40m這是一行紅色測試字體\033[0m') print('\033[1;32;40m這是一行綠色測試字體\033[0m') print('\033[1;33;40m這是一行黃色測試字體\033[0m') print('\033[1;34;40m這是一行藍色測試字體\033[0m') print('\033[1;35;40m這是一行洋紅測試字體\033[0m') print('\033[1;36;40m這是一行青色測試字體\033[0m') print('\033[1;37;40m這是一行白色測試字體\033[0m')背景色:
print('\033[1;37;40m這是一行黑色測試背景\033[0m') print('\033[1;37;41m這是一行紅色測試背景\033[0m') print('\033[1;37;42m這是一行綠色測試背景\033[0m') print('\033[1;37;43m這是一行黃色測試背景\033[0m') print('\033[1;37;44m這是一行藍色測試背景\033[0m') print('\033[1;37;45m這是一行洋紅測試背景\033[0m') print('\033[1;37;46m這是一行青色測試背景\033[0m') print('\033[1;37;47m這是一行白色測試背景\033[0m')?Colorama 一個顏色輸出的模塊
每次輸入輸出都需要如此配置是非常麻煩的事,Colorama 提供方便的字體顏色輸出的配置
from?colorama?import?init,?Fore,?Back,?Style#?Initializes?Colorama init(autoreset=True)print(Style.BRIGHT?+?Back.YELLOW?+?Fore.RED?+?"from?colorama?import?init,?Fore,?Back,?Style#?Initializes?Colorama init(autoreset=True)print(Style.BRIGHT?+?Back.YELLOW?+?Fore.RED?+?"Colorama?")")?簡單的變色函數
background_color_dict={'BLACK':40,'RED':41,'GREEN':42,'YELLOW':43,'BLUE':44,'MAGENTA':45,'CYAN':46,'WHITE':47 }text_color_dict={'BLACK':30,'RED':31,'GREEN':32,'YELLOW':33,'BLUE':34,'MAGENTA':35,'CYAN':36,'WHITE':37 }style_dict={'normal':0,'bold':1,'light':2,'italicize':3,'underline':4,'blink':5 }def?set_text_color(str_text,?style,?text_color,?background_color):str?=?str_textstyle_code?=?style_dict[style]text_color_code?=?text_color_dict[text_color]back_color_code?=?background_color_dict[background_color]print_text?=?f'\033[{style_code};{text_color_code};{back_color_code}m{str}\033[0m'return?print_text?256色
256色的輸出格式和16色的有點不一樣
轉義字符和上面的是一樣的:
十六進制:\x16[
Unicode:\u001b[
八進制:\033[
標注顯示模式則是38或者48選擇一個表名后面顏色代碼是前景色還是背景色。
如果想要同時修改,則使用兩個這樣的語句即可:
print("\033[48;5;160m\033[38;5;231m背景前景修改ABCDE?\033[38;5;226m前景修改ABCDE\033[0;0m")輸出一下所有的前景顏色
def?print_colors_256(color_code):num1?=?str(color_code)num2?=?str(color_code).ljust(3,?'?')if?color_code?%?16?==?0:return(f"\033[38;5;{num1}m?{num2}?\033[0;0m\n")else:return(f"\033[38;5;{num1}m?{num2}?\033[0;0m")print("256?color?scheme:") print('',end='?') print('?'.join([print_colors_256(x)?for?x?in?range(256)]))這個效果可能和你的終端輸出不一致,這可能是因為我們的終端使用了不同的主題,對顏色有著不同的修改。
推薦閱讀: 入門:?最全的零基礎學Python的問題? |?零基礎學了8個月的Python??|?實戰項目?|學Python就是這條捷徑 干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個海量小姐姐素描圖?|碟中諜這么火,我用機器學習做個迷你推薦系統電影 趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲! AI:?會做詩的機器人?|?給圖片上色?|?預測收入?|?碟中諜這么火,我用機器學習做個迷你推薦系統電影 小工具:?Pdf轉Word,輕松搞定表格和水印!?|?一鍵把html網頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強PDF轉換器,word、PPT、excel、markdown、html一鍵轉換?|?制作一款釘釘低價機票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!|總結
以上是生活随笔為你收集整理的一个 print 函数,挺会玩啊?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序页面跳转传递参数(富文本)
- 下一篇: 目前最快,视频剪辑批量制作字幕方法,剪映