click 命令列神器中的option

2021-10-03 12:14:32 字數 3583 閱讀 999

@click.command(

)@click.option(

'--n'

, default=1)

defdots

(n):

click.echo(

'.'* n)

執行$ dots --n=2,輸出…

當引數的值大於1個是,用引數nargs指定引數個數,option的引數個數是固定的。引數將以tuple的格式傳遞給變數。

@click.command(

)@click.option(

'--pos'

, nargs=2,

type

=float

)def

findme

(pos)

: click.echo(

'%s / %s'

% pos)

執行findme --pos 2.0 3.0,輸出2.0 / 3.0

在上乙個列子中兩個引數的型別是相同的,但這可能並不是你想要的,有時候需要兩個不同型別的值。那麼可以這樣。

@click.command(

)@click.option(

'--item'

,type=(

unicode

,int))

defputitem

(item)

: click.echo(

'name=%s id=%d'

% item)

當type引數為tuple型別時,nargs為type的長度。

putitem --item peter 1338,輸出name=peter id=1338

類似但不同於多值選項,有時候需要多次輸入相同的選項。

@click.command(

)@click.option(

'--message'

,'-m'

, multiple=

true

)def

commit

(message)

: click.echo(

'\n'

.join(message)

)

執行commit -m foo -m bar 輸出:

foo

bar

@click.command(

)@click.option(

'-v'

,'--verbose'

, count=

true

)def

log(verbose)

: click.echo(

'verbosity: %s'

% verbose)

執行log -vvv,輸出verbosity: 3

布林標記是用來啟用或禁用的選項,你可以用/分隔符來實現啟用或禁用選項。(當/在選項名中的時候,click就會認為它是個boolean標記)。

import sys

@click.command(

)@click.option(

'--shout/--no-shout'

, default=

false

)def

info

(shout)

: rv = sys.platform

if shout:

rv = rv.upper()+

'!!!!111'

click.echo(rv)

執行:

$ info -

-shout

linux2!!!!111

$ info -

-no-shout

linux2

也可以不用/,而是用is_flag引數告知click這是乙個boolean標記。

@click.command(

)@click.option(

'--shout'

, is_flag=

true

)def

info

(shout)

: rv = sys.platform

if shout:

rv = rv.upper()+

'!!!!111'

click.echo(rv)

boolean值預設是false.

如果option未輸入時,提示。使用prompt引數,prompt=true則使用預設提示,也可以prompt=「使用自定義提示語」

@click.command(

)@click.option(

'--name'

, prompt=

'your name please'

)def

hello

(name)

: click.echo(

'hello %s!'

% name)

執行:

$ hello

your name please: john

hello john!

隱藏輸入字元,並兩次輸入確認。

@click.command(

)@click.option(

'--password'

, prompt=

true

, hide_input=

true

, confirmation_prompt=

true

)def

encrypt

(password)

: click.echo(

'encrypting password to %s'

% password.encode(

'rot13'

))

執行:

$ encrypt

password:

repeat for confirmation:

encrypting password to frperg

更簡單的:

@click.command(

)@click.password_option(

)def

encrypt

(password)

: click.echo(

'encrypting password to %s'

% password.encode(

'rot13'

))

python命令列開發 click

參考文件 按照官方的介紹 click 是乙個利用很少的 以可組合的方式創造優雅命令列工具介面的 python 庫。它是高度可配置的,但卻有合理預設值的 命令列介面建立工具 它致力於將建立命令列工具的過程變的快速而有趣,免除你因無法實現乙個 cli api 的挫敗感。click 的三個特性 任意巢狀命...

國罵 命令列神器 thefuke

thefuke是乙個由python語言編寫的,自動修正錯誤命令的工具,因為獨特的命名,大受好評 自動修正命令的功能並非thefuke的原創,zsh的一些外掛程式也支援命令修正,thefuke的 命名 實在是太獨特了 一群吃瓜群眾都想看看thefuke到底是個什麼工具,一來二去,thefuke變得廣為...

命令列快速跳轉 編輯神器fasd

天下武功唯快不破,命令列雖然很多時候很快,但是整體的cd,ls,cd,ls也是讓人心煩。之前使用了autojump,可以通過關鍵字跳轉到最頻繁操作的目錄中,快!今天介紹的fasd,除了可以像autojump一樣在目錄中跳轉,還可以通過關鍵字開啟最頻繁操作的檔案,更快!centos的預設軟體倉庫中沒有...