python 之 click 包,设置命令行参数

python 之 click 包,设置命令行参数

click包一般用于带参数的python脚本运行,是通过装饰器来把一个函数方法装饰成命令行接口的, 常见的装饰器有: 1. @click.command():将其下面的函数方法装饰为命令行接口选项,(我们称为一个command实例或子命令),实现在命令行运行时可选 2. @click.option(’--xxx’, '-x', default=1,prompt=‘Your name’,type=int,nargs=1,help=‘Number of greetings) 参数释义:--xxx:即下列函数的形参 -x:形参在命令行里的缩写 default:默认值 prompt:若未输入,就提示该内容 type:参数类型 nargs:指定命令行参数接收的值的个数, -1 表示可以接收多个参数 help:编辑该参数的帮助

例:

import click

@click.command() # 将函数装饰为命令

@click.option('--n', '-nn', default=1) # 设置函数执行时的参数

def dots_n(n):

click.echo('.' * n)

if __name__ == '__main__':

dots_n()

3. @click.group():装饰器把主函数装饰为可以拥有多个子命令的 Group 对象,即脚本文件里有多个函数方法(可装饰为command实例),不同的 command 实例可以关联到group中。group下绑定的命令就成为了它的子命令。

例:

import click

@click.group() # 将主函数封装到一个group对象

def main():

pass

@main.command() # 将函数装饰为命令,并将该命令自动关联到main这一group对象下,成为子命令

@click.option('--n', '-nn', default=1) # 设置函数执行时的参数

def dots_n(n):

click.echo('.' * n)

@main.command()

@click.option('--name', '-a', default='ZJW', type=str, prompt='Your Name')

def your_name(name):

click.echo(name)

if __name__ == '__main__':

main()

这里,不使用'main.command()'自动关联,可以使用main.add_command()手动关联,例:

import click

@click.group() # 将main函数装饰为一个group对象

def main():

pass

@click.command() # 将下列函数装饰为命令

@click.option('--n', '-nn', default=1) # 设置函数参数

def dots_n(n):

click.echo('.' * n)

@click.command()

@click.option('--a', '-aa', default='ZJW', type=str, prompt='Your Name')

def your_name(a):

click.echo(a)

main.add_command(dots_n) # 将命令关联到main这一group对象下

main.add_command(your_name)

if __name__ == '__main__':

main()

运行:

python test.py dots-n --n 5 或

python test.py dots-n -n 5

python test.py your-name --name zjw 或

python test.py your-name -a zjw

这里值得注意的时,函数名里的下划线‘_’要在输入时变为‘-’,否则函数会报参数不对的错误。 并且我们如果不输入command的话,会报下列错误:

Usage: test.py [OPTIONS] COMMAND [ARGS]...

Options:

--help Show this message and exit.

Commands:

dots-n

your-name

参考:https://www.cnblogs.com/alexkn/p/6980400.html

🎭 相关推荐 🎭

蚬子怎么吐沙子干净又快?
谁有365体育投注网址

蚬子怎么吐沙子干净又快?

📅 09-20 👀 9763
古代的丫鬟买一个是多少钱?买她们来做啥?现在的你可以买得起吗
《中餐厅》带火了泰国象岛,八一八赵薇黄晓明的餐馆所在