程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python超好用的命令行界面實現工具,我保證你肯定不知道...

編輯:Python

前言

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

置。

官方文檔:https://click.palletsprojects.com/en/8.0.x/

一個簡單的示例如下:

import click
PYTHON插件/素材/源碼加Q群:903971231####
@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()

效果如下:

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

1.准備

首先需要你的電腦安裝好了Python環境,並且安裝好了Python開發工具。

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

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

2.基本使用

如文首所示的例子一樣,@click.option 是最基本的選項,它既可以設定參數默認值,也可以設定必須傳入參數:

@click.command()
@click.option('--n', default=1) # 設定了默認值
def dots(n):
click.echo('.' * n)
@click.command()
@click.option('--n', required=True, type=int) # 設定必須傳入參數值
def dots(n):
click.echo('.' * n)

如果你設置了必須傳入相關參數,那麼在沒傳入參數的情況下,效果是這樣的:

當然,它還支持設定多種參數別名,比如下面的 --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.多值參數

如果你的選項需要多個參數,Click也能幫你實現這個需求。

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

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

效果如下:

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

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

4.其他功能

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

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

效果如下:

布爾標志

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

import sys
python插件/源碼/素材加Q群:903971231###
@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參數控制的:

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

最後

好了,Click的功能就介紹到這裡,他還有許多高級的用法,比如動態默認值、回調函數等等,大家可以通過官方文檔了解這些高

級功能的使用方法:

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


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved