溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

click參數(shù)怎么在Python中使用

發(fā)布時間:2021-03-31 17:30:18 來源:億速云 閱讀:210 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)click參數(shù)怎么在Python中使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

一、前言

在概念上, click 把命令行分為 3 個組成:參數(shù)、選項和命令。

參數(shù) 就是跟在命令后的除選項外的內(nèi)容,比如 git add a.txt 中的 a.txt 就是表示文件路徑的參數(shù)

選項 就是以 - 或 -- 開頭的參數(shù),比如 -f、--file

命令 就是命令行的初衷了,比如 git 就是命令,而 git add 中的 add 則是 git 的子命令

二、參數(shù)

2.1 基本參數(shù)

基本參數(shù) 就是通過位置里指定參數(shù)值。

比如,我們可以指定兩個位置參數(shù) x 和 y ,先添加的 x 位于第一個位置,后加入的 y 位于第二個位置。那么在命令行中輸入 1 2的時候,分別對應(yīng)到的就是 x 和 y:

@click.command()
@click.argument('x')
@click.argument('y')
def hello(x, y):
  print(x, y)

2.2 參數(shù)類型

參數(shù)類型 就是將參數(shù)值作為什么類型去解析,默認情況下是字符串類型。我們可以通過 type 入?yún)碇付▍?shù)類型。

click 支持的參數(shù)類型多種多樣:

  • str / click.STRING 表示字符串類型,這也是默認類型

  • int / click.INT 表示整型

  • float / click.FLOAT 表示浮點型

  • bool / click.BOOL 表示布爾型。很棒之處在于,它會識別表示真/假的字符。對于 1、yes、y 和 true 會轉(zhuǎn)化為 True;0、no、n 和 false 會轉(zhuǎn)化為 False

  • click.UUID 表示 UUID,會自動將參數(shù)轉(zhuǎn)換為 uuid.UUID 對象

  • click.FILE 表示文件,會自動將參數(shù)轉(zhuǎn)換為文件對象,并在命令行結(jié)束時自動關(guān)閉文件

  • click.PATH 表示路徑

  • click.Choice 表示選擇選項

  • click.IntRange 表示范圍選項

同 argparse 一樣,click 也支持自定義類型,需要編寫 click.ParamType 的子類,并重載 convert 方法。

2.3 文件參數(shù)

在基本參數(shù)的基礎(chǔ)上,通過指定參數(shù)類型,我們就能構(gòu)建出各類參數(shù)。

文件參數(shù) 是非常常用的一類參數(shù),通過 type=click.File 指定,它能正確處理所有 Python 版本的 unicode 和 字節(jié),使得處理文件十分方便。

@click.command()
@click.argument('input', type=click.File('rb')) # 指定文件為二進制讀
@click.argument('output', type=click.File('wb')) # 指定文件為二進制寫
def inout(input, output):
  while True:
    chunk = input.read(1024) # 此時 input 為文件對象,每次讀入 1024 字節(jié)
    if not chunk:
      break
    output.write(chunk) # 此時 output 為文件對象,寫入上步讀入的內(nèi)容

2.4 文件路徑參數(shù)

文件路徑參數(shù) 用來處理文件路徑,可以對路徑做是否存在等檢查,通過 type=click.Path 指定。不論文件名是 unicode 還是字節(jié)類型,獲取到的參數(shù)類型都是 unicode 類型。

@click.command()
@click.argument('filename', type=click.Path(exists=True)) # 要求給定路徑存在,否則報錯
def hello(filename):
  click.echo(click.format_filename(filename))

如果文件名是以 - 開頭,會被誤認為是命令行選項,這個時候需要在參數(shù)前加上 -- 和空格,比如

$ python hello.py -- -foo.txt
-foo.txt

2.5 選擇項參數(shù)

選擇項參數(shù) 用來限定參數(shù)內(nèi)容,通過 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ù) 用來定義一個參數(shù)可以有多個值,且能通過 nargs 來定義值的個數(shù),取得的參數(shù)的變量類型為元組。

若 nargs=N,N為一個數(shù)字,則要求該參數(shù)提供 N 個值。若 N 為 -1 則接受提供無數(shù)量限制的參數(shù),如:

@click.command()
@click.argument('foo', nargs=-1)
@click.argument('bar', nargs=1)
def hello(foo, bar):
  pass

如果要實現(xiàn) argparse 中要求參數(shù)數(shù)量為 1 個或多個的功能,則指定 nargs=-1 且 required=True 即可:

@click.command()
@click.argument('foo', nargs=-1, required=True)
def hello(foo, bar):
  pass

2.7 從環(huán)境變量讀取參數(shù)

通過在 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)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI