来源: - DeekSeek - https://click.palletsprojects.com/en/stable/options/
options 参数的使用
Useful and often used kwargs are:
-
default
: Passes a default. -
help
: Sets help message. -
nargs
: Sets the number of arguments. -
required
: Makes option required. -
type
: Sets parameter type
Simple 代码
import click
@click.command()
@click.option('--string-to-echo', 'string_to_echo')
@click.option('--string-to-print', 'string_to_print')
def echo(string_to_echo, string_to_print):
click.echo(string_to_echo)
print(string_to_print)
if __name__ == '__main__':
echo()
代码文件为 xxx.py
,运行结果如下
查看帮助信息
$ python xxx.py --help
Usage: xxx.py [OPTIONS]
Options:
--string-to-echo TEXT
--string-to-print TEXT
--help Show this message and exit.
只指定第一个参数
$ python xxx.py --string-to-echo a
a
None
指定所有参数
$ python xxx.py --string-to-echo aaa --string-to-print bbb
aaa
bbb
只指定第二个参数
$ python xxx.py --string-to-print bbb
bbb
所以当使用 click.echo
的时候,遇到 None
值会输出空字符串
使用 print
的时候会输出 str(None)
命令组 @click.group()
来源: DeepSeek
import click
@click.group() # 定义一个命令组
def cli():
"""一个简单的命令行工具示例"""
pass
# 使用 @command 定义一个命令
@cli.command()
def hello():
"""简单的问候命令"""
click.echo("Hello, World!")
# 使用 @argument 定义位置参数
@cli.command()
@click.argument('name') # 必需的位置参数
def greet(name):
"""向指定的人问好"""
click.echo(f"Hello, {name}!")
# 使用 @option 定义可选参数
@cli.command()
@click.option('--count', default=1, help='重复次数') # 可选参数,有默认值
@click.argument('name')
def repeat(count, name):
"""重复问候指定次数"""
for _ in range(count):
click.echo(f"Hello, {name}!")
# 更复杂的选项示例
@cli.command()
@click.option('--verbose', is_flag=True, help='启用详细输出') # 标志选项
@click.option('--color', type=click.Choice(['red', 'green', 'blue']), help='选择颜色') # 选择类型选项
@click.argument('name')
def fancy(verbose, color, name):
"""花式问候"""
if verbose:
click.echo("准备问候...")
if color:
click.echo(f"Hello, {click.style(name, fg=color)}!")
else:
click.echo(f"Hello, {name}!")
if __name__ == '__main__':
cli()
不同装饰器的区别
-
@command
: - 定义一个命令
- 将函数转换为 Click 命令
- 最基本的装饰器,其他装饰器通常与它一起使用
-
@argument
: - 定义位置参数
- 参数是必需的(除非指定了默认值)
- 按照定义的顺序传递给函数
- 示例: greet John中的 "John" 就是位置参数
-
@option
: - 定义可选参数
- 通常以 --开头(短选项可以用 -开头)
- 可以有默认值
- 示例: repeat --count 3 John中的 --count 3就是选项
上面代码的使用方式如下
# 查看帮助
python example.py --help
# 使用简单命令
python example.py hello
# 使用位置参数
python example.py greet Alice
# 使用选项和位置参数
python example.py repeat --count 3 Bob
# 使用复杂选项
python example.py fancy --verbose --color red Charlie