日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

click option/argument参数详解(click.option()和click.argument())

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 click option/argument参数详解(click.option()和click.argument()) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

click通過click.command()裝飾函數,使之成為命令行接口;通過click.option()裝飾函數,為其約束并添加命令行選項和參數。簡化了傳統加參的方式,減少了開發者編寫的代碼量,使命令行工具編寫起來快速而有趣。

新建一個名為adduser.py的Python文件,寥寥幾行代碼已經實現了一個完整命令行工具。

import click@click.command() @click.option("--name",required=True) def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()

首先定義了一個add()函數,通過click.command()將add()函數裝飾成一個命令接口,這樣可以直接在命令行上通過“python 文件名.py ”的形式直接調用add()函數,再通過click.option()為add()函數添加選項“--name”,此選項即可通過命令行輸入的形式傳給add()函數。

一、click.option中參數的修飾字段匯總

1.required

click.option()函數中有個required字段,當required=True時表示這個選項在命令行輸入參數時必須帶上,否則會報錯。當required=False時,表示此參數可帶可不帶。

如果將required=False,則命令是可以執行成功的。

import click@click.command() @click.option('-n',"--name",required=False) def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()

click.option()還有許多其他參數字段,用來限制或者擴展選項,以滿足開發者的需要。

2.default

為當前的選項添加default值。即使此時required=True,命令行也可以不輸入參數值,如果命令行不輸入參數值表示此時輸入的是默認值。

import click@click.command() @click.option("--name",required=True,default="golden") def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()

3.nargs

指定命令行參數接收的值的個數,等于-1表示接受參數不限

import click@click.command() @click.option("--name",required=True,nargs=2) def add(name):print(name)click.echo(f"add user {name}")if __name__ == "__main__":add()

4.type

指定輸入選項對應的參數的數據類型,未指定時默認是str字符串類型。

import click@click.command() @click.option("--name",required=True) #@click.option("--name",required=True,type=str) #等同于上一句 def add(name):print(type(name)) #打印輸入參數name的數據類型click.echo(f"add user {name}")if __name__ == "__main__":add()

4.1 type字段對應的數據類型

type字段對應的數據類型
str / click.STRING表示字符串類型,這也是默認類型
int / click.INT表示整型
float / click.FLOAT表示浮點型
bool / click.BOOL表示布爾型。對于 1、yes、y 和 true 會轉化為 True;0、no、n 和 false 會轉化為 False
click.UUID表示 UUID,會自動將參數轉換為 uuid.UUID 對象
click.FILE表示文件,會自動將參數轉換為文件對象,并在命令行結束時自動關閉文件
click.PATH表示路徑
click.IntRange表示范圍選項
click.Choice

限定參數值

@click.option('-c',required=True,type=click.Choice(['start','stop']))

?

?

?

?

5.multiple

multiple=True,使用多個相同地位選項分別指定值

import click@click.command() @click.option("-N","-n","--name",required=True,type=str,multiple=True) def add(name):print(name)click.echo(f"add user {name}")if __name__ == "__main__":add()

三個選項地位相同,使用的時候可以三選一,可以解決某些要求選項不區分大小寫的情況。輸入的參數值是以元組的形式傳入函數中。

6.prompt

當在命令行中沒有輸入相應的參數時,會根據 prompt 提示用戶輸入。一般用于密碼驗證。prompt=True表示接受用戶輸入,hide_input=True表示隱藏輸入的內容,confirmation_prompt=True表示再次確認輸入的內容。當然也可以直接在命令行中輸入。

import click@click.command() @click.option("--name",required=True,type=str) @click.option("--password", prompt=True, hide_input=True, confirmation_prompt=True) #@click.password_option() #作用同上句一樣,是click對上句的封裝 def add(name,password):print(name,password)click.echo(f"add user {name}")if __name__ == "__main__":add()

?

7.is_eager、is_eager、callback,is_flag

Click 提供 eager 標識對參數名進行標識,如果輸入該參數,則會攔截既定的命令行執行流程,跳轉去執行一個回調函數。
is_eager=True???????????? 表明該命令行選項優先級高于其他選項;
expose_value=False?? 表示如果沒有輸入該命令行選項時,會執行既定的命令行流程;
callback=函數名 ? ? ? ?? 指定了輸入該命令行選項時,要跳轉執行的函數;
is_flag=True??????????????? 表明參數值可以省略。

這四個修飾字段一般會同時使用。

import clickdef print_version(ctx, param, value):print("this program version : 0.1")exit()@click.command() @click.option("--name",required=True,type=str) @click.option("--version",is_eager=True,expose_value=False,callback=print_version,is_flag=True) def add(name):print(name)click.echo(f"add user {name}")if __name__ == "__main__":add()

is_eager=True表示--version的優先級高于其他選項比如--name,當命令行同時出現這兩個參數時,會優先執行--version。

is_flag=True表示該選項的參數值可以省略,就算加上也沒有意義

expose_value=False表示命令行中沒有出現--version選項時,會執行click既定的命令流程

callback=print_version,表示當命令行中出現--version時,不在執行click既定的命令流程,轉而執行print_version()函數。

二、click.argument()

click.argument()比click.option()用法簡單很多,也是用來修飾函數為其添加參數的。不同的是argument()只是添加參數,不添加選項。上面option()中用到的修飾字段也可以用于argument()。

import click@click.command() #@click.option("--name",required=True,type=str) @click.argument("name") def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的click option/argument参数详解(click.option()和click.argument())的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。