0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Click:超好用的命令行界面實(shí)現(xiàn)工具

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-30 10:37 ? 次閱讀

Click 是一個(gè)簡潔好用的Python模塊,它能用盡量少的代碼實(shí)現(xiàn)漂亮的命令行界面。它不僅開箱即用、還能支持高度自定義的配置。

一個(gè)簡單的示例如下:

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."""
    for x in range(count):
        click.echo(f"Hello {name}!")

if __name__ == '__main__':
    hello()

效果如下:

圖片

可見這個(gè)模塊的強(qiáng)大之處,你只需要在對應(yīng)的函數(shù)上加幾個(gè)裝飾器,就能實(shí)現(xiàn)帶提示符的命令行界面的創(chuàng)建,相當(dāng)方便。

1.準(zhǔn)備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
  2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install click

2.基本使用

如文首所示的例子一樣,@click.option 是最基本的選項(xiàng),它既可以設(shè)定參數(shù)默認(rèn)值,也可以設(shè)定必須傳入?yún)?shù):

@click.command()
@click.option('--n', default=1) # 設(shè)定了默認(rèn)值
def dots(n):
    click.echo('.' * n)
    

@click.command()
@click.option('--n', required=True, type=int) # 設(shè)定必須傳入?yún)?shù)值
def dots(n):
    click.echo('.' * n)

如果你設(shè)置了必須傳入相關(guān)參數(shù),那么在沒傳入?yún)?shù)的情況下,效果是這樣的:

圖片

當(dāng)然,它還支持設(shè)定多種參數(shù)別名,比如下面的 --from 和 -f 是等效的:

@click.command()
@click.option('--from', '-f', 'from_')
@click.option('--to', '-t')
def reserved_param_name(from_, to):
    click.echo(f"from {from_} to {to}")

圖片

3.多值參數(shù)

如果你的選項(xiàng)需要多個(gè)參數(shù),Click也能幫你實(shí)現(xiàn)這個(gè)需求。

@click.command()
@click.option('--pos', nargs=2, type=float)
def findme(pos):
    a, b = pos
    click.echo(f"{a} / ")

可見,通過配置nargs參數(shù),你可以將用戶傳遞的值存入元組,并在代碼中解包這個(gè)元組拿到所有的值。

效果如下:

圖片

你還可以配置一個(gè)參數(shù)叫 multiple,這個(gè)參數(shù)可以讓你接受N個(gè)值:

@click.command()
@click.option('--message', '-m', multiple=True)
def commit(message):
    click.echo(' '.join(message))

圖片

4.其他功能

你還可以使用Click來計(jì)數(shù),這個(gè)使用非常罕見:

@click.command()
@click.option('-v', '--verbose', count=True)
def log(verbose):
    click.echo(f"Verbosity: {verbose}")

效果如下:

圖片

布爾標(biāo)志

此外,Click還帶有布爾標(biāo)志功能,你可以直接使用 "/" 來標(biāo)志參數(shù)為二選一參數(shù),函數(shù)中直接就會(huì)拿到布爾型的變量:

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)

圖片

選擇選項(xiàng)

你可以直接限定用戶的輸入范圍:

@click.command()
@click.option('--hash-type',
              type=click.Choice(['MD5', 'SHA1'], case_sensitive=False))
def digest(hash_type):
    click.echo(hash_type)

圖片

提示文本

在文首提到的例子中,輸出了個(gè) "You name:" 的提示,其實(shí)是 option 中的prompt參數(shù)控制的:

@click.command()
@click.option('--name', prompt='Your name please')
def hello(name):
    click.echo(f"Hello {name}!")

圖片

好了,Click的功能就介紹到這里,他還有許多高級的用法,比如動(dòng)態(tài)默認(rèn)值、回調(diào)函數(shù)等等。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2655

    瀏覽量

    47293
  • 工具
    +關(guān)注

    關(guān)注

    4

    文章

    307

    瀏覽量

    27709
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
  • click
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1974
收藏 人收藏

    評論

    相關(guān)推薦

    在STM32實(shí)現(xiàn)命令行

    工作中的開發(fā)環(huán)境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機(jī)也要使用命令行工具,百度了一些命令行
    發(fā)表于 12-09 11:32 ?2236次閱讀

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對于大多用戶來說往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2276次閱讀

    監(jiān)控jvm常用的5個(gè)命令行工具

    常用的幾個(gè)命令行工具有jps、jstat、jinfo、jmap、jstack等。這幾個(gè)工具可以安裝openjdk-devel-debug包。
    的頭像 發(fā)表于 02-06 14:47 ?5826次閱讀
    監(jiān)控jvm常用的5個(gè)<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    Xilinx軟件命令行工具:XSCT開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺。
    的頭像 發(fā)表于 11-21 06:02 ?1.4w次閱讀

    Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺。
    的頭像 發(fā)表于 11-22 06:53 ?6610次閱讀

    推薦這七大有趣和方便的終端/命令行界面工具

    終端/命令行是可能是程序員最常用的工具。這或許是因?yàn)樗禽p量型的,可以用來做很多事,一些開發(fā)人員甚至不遺余力地在終端內(nèi)部進(jìn)行操作。本文將分享一些我每天都會(huì)大量使用的CLI(命令行界面
    的頭像 發(fā)表于 09-30 15:42 ?2750次閱讀
    推薦這七大有趣和方便的終端/<b class='flag-5'>命令行</b><b class='flag-5'>界面</b><b class='flag-5'>工具</b>

    Git常見的誤區(qū)和命令行工具等綜述

    Git常見的誤區(qū)和命令行工具等綜述
    發(fā)表于 08-31 09:51 ?0次下載

    Golang基于flag庫實(shí)現(xiàn)一個(gè)命令行工具

    Golang 標(biāo)準(zhǔn)庫中的 flag 庫提供了解析命令行選項(xiàng)的能力,我們可以基于此來開發(fā)命令行工具。
    的頭像 發(fā)表于 10-28 09:26 ?1249次閱讀

    新的開源命令行工具west

    電子發(fā)燒友網(wǎng)站提供《新的開源命令行工具west.zip》資料免費(fèi)下載
    發(fā)表于 11-11 09:25 ?0次下載
    新的開源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    OneCommand Manager命令行界面用戶手冊

    電子發(fā)燒友網(wǎng)站提供《OneCommand Manager命令行界面用戶手冊.pdf》資料免費(fèi)下載
    發(fā)表于 08-22 11:09 ?0次下載
    OneCommand Manager<b class='flag-5'>命令行</b><b class='flag-5'>界面</b>用戶手冊

    OneCommand ManagerCommand命令行界面 版本10.6

    電子發(fā)燒友網(wǎng)站提供《OneCommand ManagerCommand命令行界面 版本10.6.pdf》資料免費(fèi)下載
    發(fā)表于 08-22 10:52 ?0次下載
    OneCommand ManagerCommand<b class='flag-5'>命令行</b><b class='flag-5'>界面</b> 版本10.6

    PetaLinux工具文檔:命令行參考指南

    電子發(fā)燒友網(wǎng)站提供《PetaLinux工具文檔:命令行參考指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-15 14:52 ?0次下載
    PetaLinux<b class='flag-5'>工具</b>文檔:<b class='flag-5'>命令行</b>參考指南

    linux虛擬機(jī)怎么調(diào)出命令行

    在Linux虛擬機(jī)中調(diào)出命令行界面,可以通過以下步驟實(shí)現(xiàn): 打開虛擬機(jī),進(jìn)入到Linux系統(tǒng)。 在桌面或應(yīng)用菜單中找到終端或命令行圖標(biāo),點(diǎn)擊打開。 輸入
    的頭像 發(fā)表于 11-08 11:28 ?2939次閱讀

    linux切換到命令行模式

    密碼后,按回車鍵確認(rèn)。 如果密碼正確,您將被成功切換到命令行模式。 請注意,以上步驟僅適用于切換到純命令行模式。如果您需要使用圖形界面命令行模式之間的切換,請使用init
    的頭像 發(fā)表于 11-13 16:47 ?1692次閱讀

    HarmonyOS開發(fā):【基于命令行(安裝庫和工具集)】

    使用命令行進(jìn)行設(shè)備開發(fā)時(shí),可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具。
    的頭像 發(fā)表于 04-25 21:03 ?357次閱讀
    HarmonyOS開發(fā):【基于<b class='flag-5'>命令行</b>(安裝庫和<b class='flag-5'>工具</b>集)】