Python 如何基于第一次输入显示/隐藏输入选项?
我正在使用Python包编写一个命令行工具 对于用户输入,我希望基于第一个输入显示/隐藏下一个输入选项 以下是示例代码:Python 如何基于第一次输入显示/隐藏输入选项?,python,python-3.x,command-line-interface,python-click,Python,Python 3.x,Command Line Interface,Python Click,我正在使用Python包编写一个命令行工具 对于用户输入,我希望基于第一个输入显示/隐藏下一个输入选项 以下是示例代码: 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(u
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\u user
返回两个值的元组。因此,行user,new_user=user
将user
设置为第一个值,将new_user
设置为第二个值。请参阅以获取更多解释。重复问题:如果您有新问题,则必须按照SO规则创建新帖子。非常感谢您的回答。有一件事我不能理解,那就是user,new\u user=user
。这意味着user、new\u user
应该具有相同的值,但它们不应该具有相同的值,因为它们具有不同的值(如果是,user=True,new\u user=no)。你能说几句话吗?@Yahya补充了一个解释-这是由于元组解包。user,new\u user=user
这里右侧的user
基本上是调用返回两个值的prompt\u user
。我说的对吗?谢谢,请再问一个问题。是否可以在两个click.option()
之间打印自定义消息?您可以随时更改click.prompt('username')
以显示所需内容,或在其前面添加更多print
语句。