python click 函数
Click模塊
click模塊是Flask的作者開發的一個第三方模塊,用于快速創建命令行。它的作用與Python標準庫的argparse相同,但是,使用起來更簡單。
click是一個第三方庫,因此使用起來需要先行安裝
安裝click模塊
使用pip命令即可完成模塊的安裝
| 1 | pip install click | 
基本使用
Click對argparse的主要改在在于易用性,使用click模塊主要分為兩個步驟:
下列為click官方提供的例子:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | 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."""??# 會當作help信息進行輸出 ????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會提示我們在交互模式下輸入
PS:與argparse模塊一樣,click也會為我們自動生成提示信息
| 1 2 3 4 5 6 7 8 9 | lidaxindeMacBook-Pro:hello DahlHin$ python3 click模塊.py?--help Usage: click模塊.py [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. | 
其他參數
option最基本的用法就是通過指定命令行選項的名稱,從命令行讀取參數值,再將其傳遞給函數。option常用的參數含義:
- default: 設置命令行參數的默認值
- help:參數說明
- type:參數類型,可以是string、int、float等
- prompt:當在命令行中沒有輸入相應的參數時,會更具prompt提示用戶輸入
- nargs:指定命令行參數接受的值的個數
- required:是否為必填參數
| 1 2 3 4 5 6 7 8 9 10 | import?click ? @click.command() @click.option('--pos',nargs=2,type=float) ? def?getfloat(pos): ????click.echo('%s / %s'?%?pos ) ? if?__name__?==?'__main__': ????getfloat() | 
注意:option中定義的參數名稱,那么就需要用同名的變量進行接受。
更多參數請參考:?http://click.pocoo.org/5/options/#choice-opts?
擴展用法
場景一:我們限定用戶輸入的值,那么就需要使用Click模塊中的Choice函數,Choice的參數是一個列表,該列表中列出所有可能的值。
| 1 2 3 4 5 6 7 8 9 | import?click ? @click.command() @click.option('-c',required=True,type=click.Choice(['start','stop']))???# 限定-c的值為start,或者stop,required表示是否為必填參數 def?getcommand(c): ????click.echo('command is %s'?%?c ) ? if?__name__?==?'__main__': ????getcommand() | 
場景二:應用程序從命令行讀取密碼。
使用標準庫中的argparse模塊只能像輸入普通參數一樣輸入密碼。這種方式存在一定安全隱患,例如輸入的密碼會保存在history中,查看命令歷史列表就能獲取密碼
在Click中,這個問題就能完美的解決,只需要是這prompt為True,那么我們就能交互式輸入密碼,設置hide_input為True,就能隱藏密碼,設置confirmation_prompt為True,就可以進行密碼的兩次驗證,使用起來非常便捷。
| 1 2 3 4 5 6 7 8 9 10 | import?click ? @click.command() @click.option('-p',prompt='Your Password',hide_input=True,confirmation_prompt=True) ? def?getpassword(p): ????click.echo('Your Password is : %s'?%?p) ? if?__name__?==?'__main__': ????getpassword() | 
點擊鏈接了解更多。
參考:https://www.cnblogs.com/dachenzi/p/7995539.html
總結
以上是生活随笔為你收集整理的python click 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: word文件在线转换成pdf
- 下一篇: 借助传感器用计算机测量速度,实验用打点计
