一、介紹
Click是一個Python包,用於以可組合的方式創建漂亮的命令行界面,只需要很少的代碼。這是“命令行界面創建工具包”。它具有高度可配置性,但具有開箱即用的合理默認值。
安裝:
pip install click
二、使用
簡單的使用步驟:
@click.command() 裝飾一個函數,使之成為命令行接口;
@click.option() 裝飾函數,為其添加命令行選項等。
官方示例
# 此文件名為hello.py
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('Hello %s!' % name) if __name__ == '__main__': hello()
在上面的例子中,函數hello接受兩個參數,分別是count和name,他們的取值從命令行中獲取,這里我們使用了click模塊中的command、option、echo,他們的作用如下:
command:使函數hello成為命令行接口
option:增加命令行選項
echo:輸出結果,使用echo進行輸出是為了更好的兼容性,因為python 2中的print是個語句,python 3中的print 是一個函數
運行上面的腳本,可以通過命令指定--name,--count的值,由於我們在option中指定了prompt選項,那么如果我們執行腳本沒有傳遞name這個參數時,Click會提示我們在交互模式下輸入。
運行時的樣子:
$ python hello.py --count=3
Your name: John
Hello John!
Hello John!
Hello John!
它會自動生成格式良好的幫助頁面:
$ python hello.py --help
Usage: hello [OPTIONS]
Simple program that greets NAME for a total of COUNT times.
Options:
--count INTEGER Number of greetings.
--name TEXT The person to greet.
--help Show this message and exit.
三、其他參數
1、option的參數
option最基本的用法就是通過指定命令行選項的名稱,從命令行讀取參數值,再將其傳遞給函數。option常用的參數含義:
- default: 設置命令行參數的默認值
- help:參數說明
- type:參數類型,可以是str、int、float等
- prompt:當在命令行中沒有輸入相應的參數時,會更具prompt提示用戶輸入
- nargs:指定命令行參數接受的值的個數
- required:是否為必填參數
import click @click.command() @click.option('--desc', nargs=2, type=str) # nargs確定參數個數,變量值會以tuple形式傳入函數 def hello(desc): click.echo(desc) click.echo('Hello %s %s' % desc) if __name__ == '__main__': hello() # 執行 python hello.py --desc "帥哥" "xx" # 結果 ('帥哥', 'xx') Hello 帥哥 xx
四、擴展用法
1、限定用戶從選項列表中選擇輸入
import click @click.command() @click.option('--sex', required=True, type=click.Choice(['male', 'female']), prompt='你的性別') # 限定-c的值為start,或者stop,required表示是否為必填參數 def set_sex(sex): click.echo('你的性別是%s' % sex) if __name__ == '__main__': set_sex() # 1.輸入參數 python test.py --sex male 你的性別是male # 2.不輸入參數 python test.py 你的性別 (male, female): male 你的性別是male