gpt4 book ai didi

python - 基于 Python 和 Click 的 CLI 应用程序如何需要选项

转载 作者:行者123 更新时间:2023-12-03 16:48:23 26 4
gpt4 key购买 nike

我正在使用 Python 和 Click 库构建 CLI 应用程序。
我如何实现以下用例:
首先,我只希望子命令后跟一个参数,不需要任何选项:

$ myapp subcommand argument
这是直截了当的。
但是我如何编写代码,如果设置了参数2,还需要一些选项?
$ myapp subcommand argument2 -o1 abc -o2 def
例如:
不需要任何选项:
$ ./myapp.py install basic
需要以下选项:
$ ./myapp.py install custom -o1 abc -o2 def
此外,我不知道如何选择参数,这意味着用户必须在“基本”或“自定义”之间进行选择。如果他选择“自定义”,他需要添加一些选项。

最佳答案

我通过制作您的 argument2 成功地实现了这一目标。成为 click.Command .
运行下面的代码,我与 CLI 应用程序交互的主要方式是通过 cli团体。那个cli组有另一个组,install , 作为命令添加。所以我们有一个带有嵌套组的 CLI。install有 2 个命令,basiccustom ,就像你的例子一样。basic不带参数,而 custom需要 2 个 Options .
调用看起来像这样:

❯ myapp install custom -o1 arg1 -o2 def
This is a custom install with option1: arg1 and option2: def

❯ myapp install basic
Executing a basic install
可以看到嵌套组 install充当帮助消息中的命令:
❯ myapp
Usage: myapp [OPTIONS] COMMAND [ARGS]...

Options:
--help Show this message and exit.

Commands:
install
如果您要调用 install ,这是您将获得的帮助输出。
❯ myapp install
Usage: myapp install [OPTIONS] COMMAND [ARGS]...

Options:
--help Show this message and exit.

Commands:
basic
custom
这是代码:
import click


@click.group()
def cli():
pass


@click.group()
def install():
pass


@install.command()
def basic():
print('Executing a basic install')


@install.command()
@click.option("-o1", "--option1", required=True)
@click.option("-o2", "--option2", required=True)
def custom(option1, option2):
print(f'This is a custom install with option1: {option1} and option2: {option2}')


def main():
cli.add_command(install)
cli()


if __name__ == '__main__':
main()

关于python - 基于 Python 和 Click 的 CLI 应用程序如何需要选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62970784/

26 4 0
文章推荐: graphql - javascript "cannot add property" "object is not extensible"当我在 graphql 查询中更新缓存时
文章推荐: angular - typescript :将 json 从 api 调用转换为 Array