<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python超好用的命令行界面實現(xiàn)工具—Click

          共 2839字,需瀏覽 6分鐘

           ·

          2022-02-28 05:45

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

          一個簡單的示例如下:

          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()


          效果如下:



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

          1.準備


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

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

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

          請選擇以下任一種方式輸入命令安裝依賴
          1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
          2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
          3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

          pip install?click


          2.基本使用



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

          @click.command()
          @click.option('--n', default=1) # 設(shè)定了默認值
          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ù)的情況下,效果是這樣的:


          當然,它還支持設(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ù)



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

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


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

          效果如下:


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

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



          4.其他功能



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

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


          效果如下:



          布爾標志

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

          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)



          選擇選項

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

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




          提示文本

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

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



          好了,Click的功能就介紹到這里,他還有許多高級的用法,比如動態(tài)默認值、回調(diào)函數(shù)等等,大家可以通過官方文檔了解這些高級功能的使用方法:

          https://click.palletsprojects.com/en/8.0.x/options/#name-your-options


          微軟憋大招:Win11真的更好用了!

          為什么說Python大數(shù)據(jù)處理一定要用Numpy Array?

          Python實時增量數(shù)據(jù)加載解決方案

          如何使用Python通過電子郵件發(fā)送短消息

          點擊關(guān)注公眾號,閱讀更多精彩內(nèi)容
          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  自拍偷拍小电影 | 日韩中文字幕免费在线观看 | 丁香六月婷婷综合激情欧美 | 成人国产三级精品秘 | 人人操97 |