python click 一个类似 argparse 的命令行参数解析库

创建日期: 2025-08-01 10:26 | 作者: 风波 | 浏览次数: 28 | 分类: Python

来源: - DeekSeek - https://click.palletsprojects.com/en/stable/options/

options 参数的使用

Useful and often used kwargs are:

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()

不同装饰器的区别

  1. ​​@command​​:
  2. 定义一个命令
  3. 将函数转换为 Click 命令
  4. 最基本的装饰器,其他装饰器通常与它一起使用
  5. ​​@argument​​:
  6. 定义位置参数
  7. 参数是必需的(除非指定了默认值)
  8. 按照定义的顺序传递给函数
  9. 示例: greet John中的 "John" 就是位置参数
  10. ​​@option​​:
  11. 定义可选参数
  12. 通常以 --开头(短选项可以用 -开头)
  13. 可以有默认值
  14. 示例: 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
28 浏览
12 爬虫
0 评论