Click 是一個(gè)簡潔好用的Python模塊,它能用盡量少的代碼實(shí)現(xiàn)漂亮的命令行界面。它不僅開箱即用、還能支持高度自定義的配置。
一個(gè)簡單的示例如下:
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo(f"Hello {name}!")
if __name__ == '__main__':
hello()
效果如下:
可見這個(gè)模塊的強(qiáng)大之處,你只需要在對應(yīng)的函數(shù)上加幾個(gè)裝飾器,就能實(shí)現(xiàn)帶提示符的命令行界面的創(chuàng)建,相當(dāng)方便。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。
請選擇以下任一種方式輸入命令安裝依賴 :
- Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
- MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
- 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install click
2.基本使用
如文首所示的例子一樣,@click.option 是最基本的選項(xiàng),它既可以設(shè)定參數(shù)默認(rèn)值,也可以設(shè)定必須傳入?yún)?shù):
@click.command()
@click.option('--n', default=1) # 設(shè)定了默認(rèn)值
def dots(n):
click.echo('.' * n)
@click.command()
@click.option('--n', required=True, type=int) # 設(shè)定必須傳入?yún)?shù)值
def dots(n):
click.echo('.' * n)
如果你設(shè)置了必須傳入相關(guān)參數(shù),那么在沒傳入?yún)?shù)的情況下,效果是這樣的:
當(dāng)然,它還支持設(shè)定多種參數(shù)別名,比如下面的 --from 和 -f 是等效的:
@click.command()
@click.option('--from', '-f', 'from_')
@click.option('--to', '-t')
def reserved_param_name(from_, to):
click.echo(f"from {from_} to {to}")
3.多值參數(shù)
如果你的選項(xiàng)需要多個(gè)參數(shù),Click也能幫你實(shí)現(xiàn)這個(gè)需求。
@click.command()
@click.option('--pos', nargs=2, type=float)
def findme(pos):
a, b = pos
click.echo(f"{a} / {b}")
可見,通過配置nargs參數(shù),你可以將用戶傳遞的值存入元組,并在代碼中解包這個(gè)元組拿到所有的值。
效果如下:
你還可以配置一個(gè)參數(shù)叫 multiple,這個(gè)參數(shù)可以讓你接受N個(gè)值:
@click.command()
@click.option('--message', '-m', multiple=True)
def commit(message):
click.echo(' '.join(message))
4.其他功能
你還可以使用Click來計(jì)數(shù),這個(gè)使用非常罕見:
@click.command()
@click.option('-v', '--verbose', count=True)
def log(verbose):
click.echo(f"Verbosity: {verbose}")
效果如下:
布爾標(biāo)志
此外,Click還帶有布爾標(biāo)志功能,你可以直接使用 "/" 來標(biāo)志參數(shù)為二選一參數(shù),函數(shù)中直接就會(huì)拿到布爾型的變量:
import sys
@click.command()
@click.option('--shout/--no-shout', default=False)
def info(shout):
rv = sys.platform
if shout:
rv = rv.upper() + '!!!!111'
click.echo(rv)
選擇選項(xiàng)
你可以直接限定用戶的輸入范圍:
@click.command()
@click.option('--hash-type',
type=click.Choice(['MD5', 'SHA1'], case_sensitive=False))
def digest(hash_type):
click.echo(hash_type)
提示文本
在文首提到的例子中,輸出了個(gè) "You name:" 的提示,其實(shí)是 option 中的prompt參數(shù)控制的:
@click.command()
@click.option('--name', prompt='Your name please')
def hello(name):
click.echo(f"Hello {name}!")
好了,Click的功能就介紹到這里,他還有許多高級(jí)的用法,比如動(dòng)態(tài)默認(rèn)值、回調(diào)函數(shù)等等。
-
模塊
+關(guān)注
關(guān)注
7文章
2670瀏覽量
47340 -
工具
+關(guān)注
關(guān)注
4文章
307瀏覽量
27734 -
python
+關(guān)注
關(guān)注
56文章
4782瀏覽量
84449 -
click
+關(guān)注
關(guān)注
0文章
4瀏覽量
1978
發(fā)布評論請先 登錄
相關(guān)推薦
評論