一. 安裝 rich 套件 :
Rich 是第三方套件, 必須用 pip install 先安裝才能使用 :
pip install rich
D:\python\test>pip install rich
Collecting rich
Downloading rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Collecting markdown-it-py>=2.2.0 (from rich)
Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich)
Downloading pygments-2.17.2-py3-none-any.whl.metadata (2.6 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich)
Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Downloading rich-13.7.1-py3-none-any.whl (240 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 240.7/240.7 kB 866.3 kB/s eta 0:00:00
Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 1.6 MB/s eta 0:00:00
Downloading pygments-2.17.2-py3-none-any.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 2.0 MB/s eta 0:00:00
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: pygments, mdurl, markdown-it-py, rich
Successfully installed markdown-it-py-3.0.0 mdurl-0.1.2 pygments-2.17.2 rich-13.7.1
用 dir() 檢視模組內容 :
>>> dir(rich)
['Any', 'Callable', 'IO', 'Optional', 'TYPE_CHECKING', 'Union', '_IMPORT_CWD', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_cell_widths', '_console', '_emoji_codes', '_emoji_replace', '_export_format', '_extension', '_fileno', '_log_render', '_loop', '_null_file', '_palettes', '_pick', '_ratio', '_win32_console', '_windows', '_windows_renderer', '_wrap', 'abc', 'align', 'ansi', 'box', 'cells', 'color', 'color_triplet', 'console', 'constrain', 'containers', 'control', 'default_styles', 'emoji', 'errors', 'get_console', 'highlighter', 'inspect', 'jupyter', 'load_ipython_extension', 'markup', 'measure', 'os', 'padding', 'pager', 'palette', 'panel', 'pretty', 'print', 'print_json', 'protocol', 'reconfigure', 'region', 'repr', 'scope', 'screen', 'segment', 'style', 'styled', 'table', 'terminal_theme', 'text', 'theme', 'themes']
用下列自訂模組來檢視其類別與函式等成員 :
def list_members(parent_obj):
members=dir(parent_obj)
parent_obj_name=?????
for mbr in members:
child_obj=eval(parent_obj_name + '.' + mbr)
if not mbr.startswith('_'):
print(mbr, type(child_obj))
將此函式存成 members.py 模組, 放在目前供作目錄下, 然後匯入其 list_members() 函式來檢視 technews 套件 :
>>> from members import list_members
>>> list_members(rich)
Any <class 'typing._SpecialForm'>
Callable <class 'typing._CallableType'>
IO <class 'type'>
Optional <class 'typing._SpecialForm'>
TYPE_CHECKING <class 'bool'>
Union <class 'typing._SpecialForm'>
abc <class 'module'>
align <class 'module'>
ansi <class 'module'>
box <class 'module'>
cells <class 'module'>
color <class 'module'>
color_triplet <class 'module'>
console <class 'module'>
constrain <class 'module'>
containers <class 'module'>
control <class 'module'>
default_styles <class 'module'>
emoji <class 'module'>
errors <class 'module'>
get_console <class 'function'>
highlighter <class 'module'>
inspect <class 'function'>
jupyter <class 'module'>
load_ipython_extension <class 'function'>
markup <class 'module'>
measure <class 'module'>
os <class 'module'>
padding <class 'module'>
pager <class 'module'>
palette <class 'module'>
panel <class 'module'>
pretty <class 'module'>
print <class 'function'>
print_json <class 'function'>
protocol <class 'module'>
reconfigure <class 'function'>
region <class 'module'>
repr <class 'module'>
scope <class 'module'>
screen <class 'module'>
segment <class 'module'>
style <class 'module'>
styled <class 'module'>
table <class 'module'>
terminal_theme <class 'module'>
text <class 'module'>
theme <class 'module'>
themes <class 'module'>
可見 rich 套件提供了豐富的功能, 其中 print() 函式最常被用來輸出結構化資料.
參考 :
二. 列印結構化資料 :
Python 的資料結構例如字典, 集合, 與串列等, 如果使用內建的 print() 列印會以字元串方式顯示, 這樣就不容易看出其結構, 例如下面這個較複雜的字典物件 :
>>> campaign={
"發起人": "小昭",
"名稱": "喵星人大集合",
"日期": "2024-03-20",
"時間": "08:00:00",
"地點": "夢想公園",
"粉絲團": ["@愛貓圈", "@鏟屎官俱樂部"]
}
用 print() 列印時會輸出一個長字串, 可讀性較差 :
>>> print(campaign)
{'發起人': '小昭', '名稱': '喵星人大集合', '日期': '2024-03-20', '時間': '08:00:00', '地點': '夢想公園', '粉絲團': ['@愛貓圈', '@鏟屎官俱樂部']}
如果使用 rich.print() 則會以鍵值結構顯示, 可讀性變高 :
>>> import rich
>>> rich.print(campaign)
{
'發起人': '小昭',
'名稱': '喵星人大集合',
'日期': '2024-03-20',
'時間': '08:00:00',
'地點': '夢想公園',
'粉絲團': ['@愛貓圈', '@鏟屎官俱樂部']
}
官網教學文件建議也可以先建立 Console 物件, 然後呼叫其 print() 方法輸出 :
>>> from rich.console import Console
>>> console=Console()
>>> console.print(campaign)
{
'發起人': '小昭',
'名稱': '喵星人大集合',
'日期': '2024-03-20',
'時間': '08:00:00',
'地點': '夢想公園',
'粉絲團': ['@愛貓圈', '@鏟屎官俱樂部']
}
三. 在命令提示字元視窗列印彩色文字 :
Rich 套件還可以在命令列顯示彩色文字, 參考下面這篇網路教學文件 :
>>> from rich.console import Console
>>> console=Console()
>>> for color in ['red', 'blue', 'green', 'yellow', 'white', 'black', 'magenta', 'cyan']:
... console.print(f"Hello World! {color} bold", style=f"{color} bold")
... console.print(f"Hello World! {color}", style=f"{color}")
...
結果如下 :
沒有留言:
張貼留言