這篇文章將為大家詳細(xì)講解有關(guān)click參數(shù)怎么在Python中使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
10年積累的網(wǎng)站制作、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有華容免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。一、前言
在概念上, click 把命令行分為 3 個(gè)組成:參數(shù)、選項(xiàng)和命令。
參數(shù) 就是跟在命令后的除選項(xiàng)外的內(nèi)容,比如 git add a.txt 中的 a.txt 就是表示文件路徑的參數(shù)
選項(xiàng) 就是以 - 或 -- 開(kāi)頭的參數(shù),比如 -f、--file
命令 就是命令行的初衷了,比如 git 就是命令,而 git add 中的 add 則是 git 的子命令
二、參數(shù)
2.1 基本參數(shù)
基本參數(shù) 就是通過(guò)位置里指定參數(shù)值。
比如,我們可以指定兩個(gè)位置參數(shù) x 和 y ,先添加的 x 位于第一個(gè)位置,后加入的 y 位于第二個(gè)位置。那么在命令行中輸入 1 2的時(shí)候,分別對(duì)應(yīng)到的就是 x 和 y:
@click.command() @click.argument('x') @click.argument('y') def hello(x, y): print(x, y)
2.2 參數(shù)類型
參數(shù)類型 就是將參數(shù)值作為什么類型去解析,默認(rèn)情況下是字符串類型。我們可以通過(guò) type 入?yún)?lái)指定參數(shù)類型。
click 支持的參數(shù)類型多種多樣:
str / click.STRING 表示字符串類型,這也是默認(rèn)類型
int / click.INT 表示整型
float / click.FLOAT 表示浮點(diǎn)型
bool / click.BOOL 表示布爾型。很棒之處在于,它會(huì)識(shí)別表示真/假的字符。對(duì)于 1、yes、y 和 true 會(huì)轉(zhuǎn)化為 True;0、no、n 和 false 會(huì)轉(zhuǎn)化為 False
click.UUID 表示 UUID,會(huì)自動(dòng)將參數(shù)轉(zhuǎn)換為 uuid.UUID 對(duì)象
click.FILE 表示文件,會(huì)自動(dòng)將參數(shù)轉(zhuǎn)換為文件對(duì)象,并在命令行結(jié)束時(shí)自動(dòng)關(guān)閉文件
click.PATH 表示路徑
click.Choice 表示選擇選項(xiàng)
click.IntRange 表示范圍選項(xiàng)
同 argparse 一樣,click 也支持自定義類型,需要編寫(xiě) click.ParamType 的子類,并重載 convert 方法。
2.3 文件參數(shù)
在基本參數(shù)的基礎(chǔ)上,通過(guò)指定參數(shù)類型,我們就能構(gòu)建出各類參數(shù)。
文件參數(shù) 是非常常用的一類參數(shù),通過(guò) type=click.File 指定,它能正確處理所有 Python 版本的 unicode 和 字節(jié),使得處理文件十分方便。
@click.command() @click.argument('input', type=click.File('rb')) # 指定文件為二進(jìn)制讀 @click.argument('output', type=click.File('wb')) # 指定文件為二進(jìn)制寫(xiě) def inout(input, output): while True: chunk = input.read(1024) # 此時(shí) input 為文件對(duì)象,每次讀入 1024 字節(jié) if not chunk: break output.write(chunk) # 此時(shí) output 為文件對(duì)象,寫(xiě)入上步讀入的內(nèi)容
2.4 文件路徑參數(shù)
文件路徑參數(shù) 用來(lái)處理文件路徑,可以對(duì)路徑做是否存在等檢查,通過(guò) type=click.Path 指定。不論文件名是 unicode 還是字節(jié)類型,獲取到的參數(shù)類型都是 unicode 類型。
@click.command() @click.argument('filename', type=click.Path(exists=True)) # 要求給定路徑存在,否則報(bào)錯(cuò) def hello(filename): click.echo(click.format_filename(filename))
如果文件名是以 - 開(kāi)頭,會(huì)被誤認(rèn)為是命令行選項(xiàng),這個(gè)時(shí)候需要在參數(shù)前加上 -- 和空格,比如
$ python hello.py -- -foo.txt -foo.txt
2.5 選擇項(xiàng)參數(shù)
選擇項(xiàng)參數(shù) 用來(lái)限定參數(shù)內(nèi)容,通過(guò) type=click.Choice 指定。
比如,指定文件讀取方式限制為 read-only 和 read-write:
@click.command() @click.argument('mode', type=click.Choice(['read-only', 'read-write'])) def hello(mode): click.echo(mode)
2.6 可變參數(shù)
可變參數(shù) 用來(lái)定義一個(gè)參數(shù)可以有多個(gè)值,且能通過(guò) nargs 來(lái)定義值的個(gè)數(shù),取得的參數(shù)的變量類型為元組。
若 nargs=N,N為一個(gè)數(shù)字,則要求該參數(shù)提供 N 個(gè)值。若 N 為 -1 則接受提供無(wú)數(shù)量限制的參數(shù),如:
@click.command() @click.argument('foo', nargs=-1) @click.argument('bar', nargs=1) def hello(foo, bar): pass
如果要實(shí)現(xiàn) argparse 中要求參數(shù)數(shù)量為 1 個(gè)或多個(gè)的功能,則指定 nargs=-1 且 required=True 即可:
@click.command() @click.argument('foo', nargs=-1, required=True) def hello(foo, bar): pass
2.7 從環(huán)境變量讀取參數(shù)
通過(guò)在 click.argument 中指定 envvar,則可讀取指定名稱的環(huán)境變量作為參數(shù)值,比如:
@click.command() @click.argument('filename', envvar='FILENAME') def hello(filename): print(filename)
執(zhí)行如下命令查看效果:
$ FILENAME=hello.txt python3 hello.py hello.txt
而在 argparse 中,則需要自己從環(huán)境變量中讀取。
關(guān)于click參數(shù)怎么在Python中使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。