来源: - 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