我正在使用 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/