Python Click 简单使用说明

Python Click库的来源:

Click是一个Python的命令行接口库,它由Alexandru Dutra和Ignacio Vergara于2010年创建。Click的目标是提供一种简单而灵活的方式来创建命令行应用程序。

常用参数说明:

  1. @click.command():这个装饰器用于定义一个新的命令。每个命令都需要一个函数作为其主体。

  2. .@click.option():这个装饰器用于定义命令行选项。

    1.name:选项的名称,必须以双短划线开头。
    2.default:选项的默认值。
    3.type:选项的类型。例如,int,float,path等。
    4.required:是否必须提供该选项。
    5.help:选项的帮助文本。
    6.callback:当选项被提供时调用的回调函数。

  3. @click.argument():这个装饰器用于定义命令行参数。

    1.name:参数的名称。
    2.type:参数的类型。
    3.required:是否必须提供该参数。
    4.help:参数的帮助文本。

  4. click.echo():用于在命令行中输出文本。

  5. click.get_current_context():返回当前上下文对象,可以用于访问当前命令的参数和选项

  6. click.Abort():引发一个中止异常,这将导致程序退出并显示错误消息。

  7. click.File():用于处理文件输入/输出。

  8. click.Path():用于处理路径选项或参数,它确保路径是有效的,并且可以自动创建目录

  9. click.Choice(choices):允许用户从一组预定义的值中选择一个选项

  10. click.Confirm(prompt=None, default=True, abort=False):用于确认操作是否应该继续进行。

  11. click.Password(prompt=‘Password:’, default=‘’, hide_input=True):用于接收密码输入,不会在命令行中显示输入的内容。

代码示例:

以下是一个简单的Click命令行应用的示例,它用于计算两个数字的和:


python
import click

@click.command()
@click.option('--num1', type=int, default=0, help='First number')
@click.option('--num2', type=int, default=0, help='Second number')
@click.option('--sum', type=int, default=0, help='Sum of the two numbers')
def calculate(num1, num2, sum):
    if num1 + num2 == sum:
        click.echo('Numbers match!')
    else:
        click.echo(f'Numbers do not match! The sum is {num1 + num2}')

if __name__ == '__main__':
    calculate()

stdout:

tiger@Super-Server:~/C++_Study$ python3 calculate.py --help
Usage: 1.py [OPTIONS]

Options:
  --num1 INTEGER  First number
  --num2 INTEGER  Second number
  --sum INTEGER   Sum of the two numbers
  --help          Show this message and exit.

在这个示例中,我们定义了一个名为calculate的函数,它有三个选项:num1, num2, 和 sum。用户可以通过命令行提供这些选项的值,然后程序会检查两个数字的和是否与提供的值匹配,并输出相应的消息。

以下是一些更高级的Click应用示例,用于帮助你深入学习:

使用组(Groups):

import click
from click import Command, Group, echo

@click.group()
@click.pass_context
def my_app(ctx):
    """My Application"""
    ctx.obj = []

@my_app.command()
@click.pass_context
def add(ctx):
    """Add an item to the list"""
    item = click.prompt('Enter an item')
    ctx.obj.append(item)

@my_app.command()
@click.pass_context
def display(ctx):
    """Display the current list"""
    echo('Current list:')
    for item in ctx.obj:
        echo(item)

if __name__ == '__main__':
    my_app()

使用回调函数(Callback Functions):

import click

def handle_pre_command(ctx, args):
    """
    回调函数,在命令执行前执行一些操作
    """
    print("在命令执行前执行操作")

    return args

@click.command()
@click.pass_context
def my_command(ctx):
    """
    我的命令
    """
    args = ctx.args
    handle_pre_command(ctx, args)
    print("命令执行前")
    # 在这里执行一些操作...
    print("命令执行后")
if __name__ == '__main__':
    wait()

使用上下文参数(Contextual Parameters):

python
import click

@click.command()
@click.option('--file', type=click.File('r'), default='-', help='Input file. Defaults to stdin.')
def cat(file):
    click.echo(file.read())
if __name__ == '__main__':
    cat()

你可能感兴趣的:(python,开发语言,前端)