python - 如何根据第一个输入显示/隐藏输入选项?

标签 python python-3.x command-line-interface python-click

我正在使用 Python 编写一个命令行工具 Click包裹。

对于用户输入,我想根据第一个输入显示/隐藏下一个输入选项。

这里是示例代码:

import click


@click.command()
@click.option('--user/--no-user', prompt='do you want to add user?')
@click.option('--new-user', prompt='add user')
def add_user(user, new_user):
    print(user)
    print(new_user)


add_user()

仅当用户在第一个输入中键入 yes 时('--user/--no-user'),我才想显示第二个提示('--new-user') )。

有什么帮助我该怎么做吗? 提前致谢。

最佳答案

您必须使用自定义回调:

import click

def prompt_user(ctx, param, user):
    new_user = None
    if user:
        new_user = click.prompt('username')
    return (user, new_user)


@click.command()
@click.option('--user/--no-user', prompt='do you want to add user?', callback=prompt_user)
def add_user(user):
    user, new_user = user
    print(user)
    print(new_user)

if __name__ == '__main__':
    add_user()

$ python3.8 user.py
do you want to add user? [y/N]: y
username: no
True
no
$ python3.8 user.py
do you want to add user? [y/N]: N
False
None

请注意,prompt_user 返回一个包含两个值的元组。因此,user, new_user = user 行将 user 设置为第一个值,将 new_user 设置为第二个值。请参阅this link以获得更多解释。

关于python - 如何根据第一个输入显示/隐藏输入选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59734638/

相关文章:

python - PyCharm 无法识别我的 python 解释器和 PIP 包。也许路径问题?

amazon-web-services - AWS CLI CloudFront 使所有文件无效

python - 如何从 python 中调用 python click ?

python - 使用 KeyboardInterrupt 关闭多线程应用程序

python - 如何标准化 pandas DataFrame 中行之间的字符串?

python - 位置数字总和(两个数字根据其位置的数字之和)

bash - 如何在特定文件夹中创建多个文件而不重复路径名?

python - 为什么 Clojure 频率不比 Python collections.Counter 快?

python - 为什么文本 I/O 必须在 python 3 中缓冲?

python-3.x - 使用 or 条件过滤 django View