Python學習-終端字體高亮顯示

1、采用原生轉義字符序列,對Windows有的版本不支持(比如win7),完美支持Linux

實現過程:

終端的字符顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關。

轉義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進制表示是27,用八進制表示就是033)。

格式:

? ? ?開頭部分:\033[顯示方式;前景色;背景色m +?結尾部分:\033[0m

? ? ?注意:開頭部分的三個參數:顯示方式,前景色,背景色是可選參數,可以只寫其中的某一個;另外由于表示三個參數不同含義的數值都是唯一的沒有重復的,所以三個參數的書寫先后順序沒有固定要求,系統都能識別;但是,建議按照默認的格式規范書寫。
? ? ?對于結尾部分,其實也可以省略,但是為了書寫規范,建議\033[***開頭,\033[0m結尾。
用這種原生的轉義序列輸出,在linux下完全支持,但是在windows下確存在兼容問題,比如在win10下可以正常顯示顏色,在win7下確不支持。因此可以使用python標準庫提供的colorama模塊輸出彩色字體,這個模塊是跨平臺的,內部實現也是采用轉義序列來顯示顏色的,只不過對windows平臺做了特殊處理,因此完全兼容linux和windows各個版本。
數值參數表示的意義:
說明:
前景色背景色顏色
3040黑色
3141紅色
3242綠色
3343黃色
3444藍色
3545紫紅色
3646青藍色
3747白色

顯示方式:

顯示方式意義
0終端默認設置
1高亮顯示
4使用下劃線
5閃爍
7反白顯示
8不可見
 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/4/29 10:27
 4 # @Author  : yang
 5 # @File    : Colored_Escape_character.py
 6 # @Software: PyCharm
 7 #--------------------------------
 8 #顯示格式:\033[顯示方式;前景色;背景色m
 9 #--------------------------------
10 #顯示方式           說明
11 #   0             終端默認設置
12 #   1             高亮顯示
13 #   4             使用下劃線
14 #   5             閃爍
15 #   7             反白顯示
16 #   8             不可見
17 #   22            非粗體
18 #   24            非下劃線
19 #   25            非閃爍
20 #
21 #前景色            背景色          顏色
22 #  30                40            黑色
23 #  31                41            紅色
24 #  32                42            綠色
25 #  33                43            黃色
26 #  34                44            藍色
27 #  35                45            紫紅色
28 #  36                46            青藍色
29 #  37                47            白色
30 #---------------------------------------
31 class Colored(object):
32     RED = '\033[31m'       #紅色
33     GREEN = '\033[32m'     #綠色
34     YELLOW = '\033[33m'    #黃色
35     BLUE = '\033[34m'      #藍色
36     FUCHSIA = '\033[35m'   #紫紅色
37     CYAN = '\033[36m'      #青藍色
38     WHITE = '\033[37m'     #白色
39     #:no color
40     RESET = '\033[0m'      #終端默認顏色
41     def color_str(self,color,s):
42         return '{}{}{}'.format(getattr(self,color),s,self.RESET)
43 
44     def red(self,s):
45         return self.color_str('RED',s)
46     def green(self,s):
47         return self.color_str('GREEN',s)
48     def yellow(self,s):
49         return self.color_str('YELLOW',s)
50     def blue(self,s):
51         return self.color_str('BLUE',s)
52     def fuchsia(self,s):
53         return self.color_str('FUCHSIA',s)
54     def cyan(self,s):
55         return self.color_str('CYAN',s)
56     def white(self,s):
57         return self.color_str('WHITE',s)
58 #-----------使用示例如下--------
59 color = Colored()
60 print(color.red('I am red!'))
61 print(color.green('I am green!'))
62 print(color.yellow('I am yellow!'))
63 print(color.blue('I am blue!'))
64 print(color.fuchsia('I am fuchsia!'))
65 print(color.cyan('I am cyan!'))
66 print(color.white('I am white!'))

?輸出結果:

2、采用Python標準庫colorama模塊--兼容linux和windows各個版本:

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/4/29 10:57
 4 # @Author  : yang
 5 # @File    : Colored_Colorama_module.py
 6 # @Software: PyCharm
 7 #--------------colorama模塊的一些常量-------
 8 #colorama是一個python專門用來在控制臺、命令行輸出彩色文字的模塊,可以跨平臺使用
 9 # 在windows下linux下都工作良好,如果你想讓控制臺的輸出信息更漂亮一些,可以使用給這個模塊。
10 # Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
11 # Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
12 # Style: DIM, NORMAL, BRIGHT, RESET_ALL
13 from colorama import init,Fore,Back,Style
14 #init(autoreset=True)
15 class Colored(object):
16     def red(self,s):
17         return Fore.RED + s + Fore.RESET
18     def green(self,s):
19         return Fore.GREEN + s + Fore.RESET
20     def yellow(self,s):
21         return Fore.YELLOW + s + Fore.RESET
22     def blue(self,s):
23         return Fore.BLUE + s + Fore.RESET
24     def magenta(self,s):
25         return Fore.MAGENTA + s + Fore.RESET
26     def cyan(self,s):
27         return Fore.CYAN + s + Fore.RESET
28     def white(self,s):
29         return Fore.WHITE + s + Fore.RESET
30     def balck(self,s):
31         return Fore.BLACK
32     def white_green(self,s):
33         return Fore.WHITE + Back.GREEN + s + Fore.RESET + Back.RESET
34 color = Colored()
35 print(color.red('I am red!'))
36 print(color.green('I am green!'))
37 print(color.yellow('I am yellow!'))
38 print(color.blue('I am blue!'))
39 print(color.magenta('I am magenta!'))
40 print(color.cyan('I am cyan!'))
41 print(color.white('I am white!'))
42 print(color.white_green('I am white green!'))
輸出結果:
?3、采用Python的termcolor模塊:

termcolor是一個python包,可以改變控制臺輸出的顏色,支持各種terminal(WINDOWS的cmd.exe除外)。

支持下列的文字顏色:

grey, red, green, yellow, blue, magenta, cyan, white

支持下列的背景高亮:

on_grey, on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white

支持下列屬性:

bold, dark, underline, blink, reverse, concealed

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/4/29 16:49
 4 # @Author  : yang
 5 # @File    : Colored_Termcolor_module.py
 6 # @Software: PyCharm
 7 import sys
 8 from termcolor import colored,cprint
 9 text = colored('Hello,World!','red',attrs=['reverse','blink'])
10 
11 #colored(text, color=None, on_color=None, attrs=None)
12 #    Available text colors:
13 #        red, green, yellow, blue, magenta, cyan, white.
14 
15 #    Available text highlights:
16 #        on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white.
17 
18 #    Available attributes:
19 #        bold, dark, underline, blink, reverse, concealed.
20 #print('\033[5;7;31mHello,World!\033[0m')
21 
22 print(text)
23 
24 cprint('Hello,World!','green','on_red')
25 #cprint('Hello,World!','green','on_red',attrs=['bold'])
26 #def cprint(text, color=None, on_color=None, attrs=None, **kwargs)
27 
28 print_red_on_cyan = lambda x:cprint(x,'red','on_cyan')
29 print_red_on_cyan('Hello,World!')
30 print_red_on_cyan('Hello,Universe!')
31 for i in range(10):
32     cprint(i,'magenta',end=' ')
33 cprint('Attention!','red',attrs=['bold'],file = sys.stderr)

?

輸出結果:

?

參考:

1、https://pypi.org/project/colorama/

2、https://pypi.org/project/termcolor/#description

3、https://www.cnblogs.com/hellojesson/p/5961570.html

4、https://stackoverflow.com/questions/287871/print-in-terminal-with-colors/3332860#3332860

轉載于:https://www.cnblogs.com/yangshijia/p/8969271.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452825.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452825.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452825.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Win32-Application的窗口和對話框

Win32 Application,沒有基于MFC的類庫,而是直接調用C接口來編程。 一、彈出消息窗口 (1)最簡單的,在當前窗口中彈出新窗口。新窗口只有“YES”按鈕。 int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstan…

Python面試題總結(4)--數據類型(列表)

1. 已知 AList [1,2,3,1,2],對 AList 列表元素去重,寫出具體過程。 答: AList [1,2,3,1,2] BList set(AList)print(BList) print(list(BList))輸出結果: {1, 2, 3} [1, 2, 3]2. 如何實現 “1,2,3” 變成 [“1”,“2”,“3”…

項目團隊要以十當一

如何建立起一支高效的團隊,并有效的管理團隊,一直是IT項目經理津津樂道的話題。任何一個IT項目經理對此都有自己一番不同的見解,根據自己團隊特點,項目經理正在用自身獨有的管理藝術改變著自己的團隊。項目團隊要以十當一&#xf…

Centos中配置環境變量

以Java的開發環境Jdk為例。 將jdk-9.0.1放置在/usr/local下(UNIX規范),然后我們將jdk配置到環境變量中去。 $ mv jdk-9.0.1 /usr/local $ vim /etc/profile 修改 /etc/profile ,最底部加入以下內容 export JAVA_HOME/usr/local/jd…

python面試題總結(5)--數據類型(字典)

1. 字典操作中 del 和 pop 有什么區別 答:del 可以根據索引(元素所在位置)來刪除的,沒有返回值。 pop 可以根據索引彈出一個值,然后可以接收它的返回值。 參考一 參考二 2. 按照字典的內的年齡排序 d1 [ {‘name’…

js下載文件 java_[Java教程]使用js實現點擊按鈕下載文件

[Java教程]使用js實現點擊按鈕下載文件0 2016-11-11 19:02:54有時候我們在網頁上需要增加一個下載按鈕,讓用戶能夠點擊后下載頁面上的資料,那么怎樣才能實現功能呢?這里有兩種方法:現在需要在頁面上添加一個下載按鈕,點…

underscore.js源碼研究(5)

概述 很早就想研究underscore源碼了,雖然underscore.js這個庫有些過時了,但是我還是想學習一下庫的架構,函數式編程以及常用方法的編寫這些方面的內容,又恰好沒什么其它要研究的了,所以就了結研究underscore源碼這一心…

人心散了、項目必然要敗

最近接手一個項目,是從半路上接過來的。按照常理,只要腦子沒被驢踢,是不會接人家的爛攤子的。我之所以接這個項目,一方面是因為這個項目中的開發人員是我部門的人(本人是部門主管),另一方面是因…

國家自科委管文科學部認定的國內30種重要期刊

國家自科委管文科學部認定的國內30種重要期刊 A類刊物(22種) 1、管理科學學報(雙月刊) 2、系統工程理論與實踐(月刊) 3、管理世界(月刊) 4、數量經濟技術經濟研究(月刊&a…

面向對象的四個要點

?把對象(object)作為融合了數據及在數據上的操作行為的統一的軟件構件?把所有對象都劃分成類(class)。?按照父類與子類的關系,把若干個相關類組成一個層次結構的系統。?對象彼此間僅能通過發送消息互相聯系。

Django二次開發對接FastDFS

1.自定義文件存儲器類 配置文件settings中加入如下配置 # 設置Django的文件存儲類、(名字固定) DEFAULT_FILE_STORAGEutils.fdfs.storage.FDFSStorage# 設置fdfs使用的client.conf文件路徑(名字自己定義) FDFS_CLIENT_CONF./util…

微信支付 java 集成案例_Spring Boot項目中集成微信支付v3

1. 前言最近忙的一批,難得今天有喘氣的機會就趕緊把最近在開發中的一些成果分享出來。前幾日分享了自己寫的一個微信支付V3的開發包payment-spring-boot-starter,就忙里偷閑完善了一波。期間給微信支付提交了6個BUG,跟微信支付的產品溝通了好…

單挑力扣(LeetCode)SQL題:1308. 不同性別每日分數總計

相信很多學習SQL的小伙伴都面臨這樣的困境,學習完書本上的SQL基礎知識后,一方面想測試下自己的水平;另一方面想進一步提升,卻不知道方法。 其實,對于技能型知識,我的觀點一貫都是:多練習、多實…

需求與范圍駕馭深刻反省總結

每天都在講范圍、說需求,真的到了想整理出點什么的時候,卻一下子不知從何說起。也許是熟悉麻痹癥吧。根據我的破經歷,在需求方面有幾個是最搞人的,只要我們方法得當,雖然不一定能夠完全駕馭,但起碼可以改善…

16. vim

vim編輯器是vi的升級版本,帶顏色顯示安裝yum install -y vim-enhanced將passwd文件復制到其他目錄下,vim后沒有顏色 一般模式上下左右方向鍵或kjhl四個鍵移動光標n方向鍵 向特定方向移動n位ctrl b 或 pageup 向上翻頁ctrl f 或 pagedown 向下翻頁0或sh…

軟件生命周期

軟件生命周期由軟件定義、軟件開發和運行維護 ( 也稱為軟件維護 )3 個時期組成,每個時期又進一步劃分成若干個 階段 。

Jmeter(三)_配置元件

HTTP Cookie Manager 用來存儲瀏覽器產生的用戶信息 Clear Cookies each Iteration:每次迭代請求,清空cookies,GUI中定義的任何cookie都不會被清除。Implementation:默認HC4CookieHandlerCookie Policy:將用于管理Cook…

山寨版項目管理經驗小結

不知道這個標題是否合適。 忙了互聯網,再忙作軟件,今天好不容易閑下來,寫點最近總結的一些經驗。最近在和北京幾家大的軟件公司的合作過程中,也許我所看到的,可能不代表全部,但是值得從事這個行業的人重視。…

Django項目--首頁靜態化

0前言 1.使用Celery生成靜態頁面 task.py中新增任務函數generate_static_index_html(),任務函數生成靜態頁面。 app.task def generate_static_index_html():產生首頁靜態頁面# 獲取商品的種類信息types GoodsType.objects.all()# 獲取首頁輪播商品信息goods_bann…