如何根据 Python 和 Click 要求 CLI 应用程序的选项
How require options for CLI app based on Python and Click
我正在使用 Python 和 Click 库构建一个 CLI 应用程序。
如何实现以下用例:
首先,我只希望子命令后跟一个参数,不需要任何选项:
$ myapp subcommand argument
这很简单。
但是如果设置了 argument2 还需要一些选项,我该如何编写代码呢?
$ 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 个命令,basic
和 custom
,如您的示例所示。
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 和 Click 库构建一个 CLI 应用程序。
如何实现以下用例:
首先,我只希望子命令后跟一个参数,不需要任何选项:
$ myapp subcommand argument
这很简单。
但是如果设置了 argument2 还需要一些选项,我该如何编写代码呢?
$ 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 个命令,basic
和 custom
,如您的示例所示。
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()