Getting user input is an important part of any kind of application. Since we've already learned about options, adding a user prompt to our hello world app should be a breeze. All we need to do is add prompt=True
to the option decorator, so that it prompts the user for input if no option is passed in.
# helloworld.py import click @click.command() @click.option('-c', '--case', type=click.Choice(['upper', 'lower']), prompt=True) @click.argument('person', default='you') def hello(case, person): response = "Hello World! Also, hey {} ☺️".format(person) if case == 'upper': click.echo(response.upper()) elif case == 'lower': click.echo(response.lower()) else: click.echo(response)
Save and run the app:
(venv) $ hello Case (upper, lower): upper HELLO WORLD! ALSO, HEY YOU ☺️ (venv) $ hello sally Case (upper, lower): lower hello world! also, hey sally ☺️
You may also set a custom prompt string if you wish:
# helloworld.py import click @click.command() @click.option('-c', '--case', type=click.Choice(['upper', 'lower']), prompt='Please enter case') @click.argument('person', default='you') def hello(case, person): response = "Hello World! Also, hey {} ☺️".format(person) if case == 'upper': click.echo(response.upper()) elif case == 'lower': click.echo(response.lower()) else: click.echo(response)
The set string will now be displayed instead of the default prompt:
(venv) $ hello Please enter case (upper, lower): upper HELLO WORLD! ALSO, HEY YOU ☺️
Top comments (0)