作者:Jackpop
鏈接:https://www.zhihu.com/question/24590883/answer/709395848
來源:知乎
著作權(quán)歸作者所有顾腊。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處挖胃。
官方文檔:https://click.palletsprojects.com/en/7.x/
Click的開發(fā)初衷就是使用最少的代碼杂靶,以一種可組合的方式創(chuàng)建漂亮的命令行接口。它的目的是使編寫命令行工具的過程快速而有趣酱鸭,同時(shí)防止由于無法實(shí)現(xiàn)預(yù)期的CLI API而導(dǎo)致的任何問題吗垮。Click主要有以下3個(gè)亮點(diǎn):命令的任意嵌套自動(dòng)幫助頁面生成支
持在運(yùn)行時(shí)延遲加載子命令安裝$ pip install clickClick支持Python 3.4和更新版本、Python 2.7和PyPy凹髓。首先先來一個(gè)例子烁登,
import click
?
?
@click.command()
@click.option("--name", default="li", help="your name")
@click.option("--age", default=26, help="your age")
def hello_world(name, age):
click.echo(name)
print(age)
hello_world()命令行調(diào)用,$ python test.py --name ll --age 27
輸出
ll
27
可以看出蔚舀,上述主要用了click的3個(gè)方法饵沧,分別是锨络,commandoptionecho這3個(gè)方法在Click工具中至關(guān)重要,除此之外還有其他的方法狼牺,它們的功能分別是羡儿,方法功能
command:用于裝飾一個(gè)函數(shù),使得該函數(shù)作為命令行的接口是钥,例如上述裝飾hello_world
option:用于裝飾一個(gè)函數(shù)掠归,主要功能是為命令行添加選項(xiàng)
echo:用于輸出結(jié)果,由于print函數(shù)在2.x和3.x之間存在不同之處悄泥,為了更好的兼容性虏冻,因此提供了echo輸出方法
Choice:輸入為一個(gè)列表,列表中為選項(xiàng)可選擇的值把上述程序的幫助信息輸出
$ python test.py --help
Usage: test.py [OPTIONS]
?
Options:
--name TEXT your name
--age INTEGER your age
--help Show this message and exit.
在示例程序中码泞,對(duì)于option只使用了default、help兩個(gè)屬性狼犯,除此之外option還有其他的屬性選項(xiàng)余寥,它們的功能如下,屬性描述default:給命令行選項(xiàng)添加默認(rèn)值help:給命令行選項(xiàng)添加幫助信息type:指定參數(shù)的數(shù)據(jù)類型悯森,例如int宋舷、str、floatrequired:是否為必填選項(xiàng)瓢姻,True為必填祝蝠,F(xiàn)alse為非必填prompt:在命令行提示用戶輸入對(duì)應(yīng)選項(xiàng)的信息nargs:指定命令行選項(xiàng)接收參數(shù)的個(gè)數(shù),如果超過則會(huì)報(bào)錯(cuò)除此之外幻碱,Click還提供了group方法绎狭,該方法可以添加多個(gè)子命令,
import click
?
?
@click.group()
def first():
print("hello world")
?
@click.command()
@click.option("--name", help="the name")
def second(name):
print("this is second: {}".format(name))
?
@click.command()
def third():
print("this is third")
?
first.add_command(second)
first.add_command(third)
first()調(diào)用子命令second褥傍,$ python test.py second --name hh
輸出
hello world
this is second: hh