| OS | Windows 10 64bit |
| Python | 3.10.2 |
| Click | 8.1.3 |
clickは、シンプルでありながら高機能なオプション解析ライブラリです。
clickのインストールと基本的な使い方は以下の記事をご覧ください。
【シンプル&高機能】オプション解析ライブラリClickのご紹介
本記事ではclickのpromptオプションについてご紹介します。
promptオプションは、オプション引数が渡されなかった場合、標準入力によって入力を促します。
promptオプションを有効にするには、2つ方法があります。
promptにTrueを設定promptに入力を促すメッセージを文字列で設定
@click.optionメソッドの引数promptにTrueを設定することで、promptオプションを有効にできます。
この場合、入力を促すメッセージはオプション名が採用されます。
import click
@click.command()
@click.option('-opt', '--option', prompt=True)
def main(option):
click.echo(f'{option=}, {type(option)=}')
if __name__ == '__main__':
main()> python test.py
Option: 18
option='18', type(option)=<class 'str'>Option: となっている部分が入力を促すメッセージです。この後に入力することでoptionオブジェクトに格納されます。
通常通りオプション引数を渡すこともできます。
> python test.py -opt 18
option='18', type(option)=<class 'str'>@click.optionメソッドの引数promptに入力を促すメッセージを設定することで、promptオプションを有効にできます。
この場合、入力を促すメッセージには設定されたメッセージが表示されます。
import click
@click.command()
@click.option('-opt', '--option', prompt="入力してください")
def main(option):
click.echo(f'{option=}, {type(option)=}')
if __name__ == '__main__':
main()> python test.py
入力してください: 18
option='18', type(option)=<class 'str'>パスワードなど入力文字列を隠したい場合があります。そのようなときは、パスワードpromptが使えます。
入力文字列を隠す場合は@click.optionの引数hide_inputをTrueに設定します。
import click
@click.command()
@click.option('-opt', '--option', prompt=True, hide_input=True)
def main(option):
click.echo(f'{option=}, {type(option)=}')
if __name__ == '__main__':
main()> python test.py
Option:
option='18', type(option)=<class 'str'>Option: の後に18と入力していますが表示されていません。
確認のために再入力を促すこともよくあります。その場合引数confirmation_promptをTrueに設定します。
import click
@click.command()
@click.option('-opt', '--option', prompt=True, confirmation_prompt=True)
def main(option):
click.echo(f'{option=}, {type(option)=}')
if __name__ == '__main__':
main()> python test.py
Option: 18
Repeat for confirmation: 19
Error: The two entered values do not match.
Option: 18
Repeat for confirmation: 18
option='18', type(option)=<class 'str'>再入力時にマッチしない場合は、再度入力を促されます。
もちろん、引数hide_inputと併用できます。
import click
@click.command()
@click.option('-opt', '--option', prompt=True, hide_input=True, confirmation_prompt=True)
def main(option):
click.echo(f'{option=}, {type(option)=}')
if __name__ == '__main__':
main()> python test.py
Option:
Repeat for confirmation:
option='18', type(option)=<class 'str'>@click.password_optionメソッドでデコレートするでパスワードを入力するオプションを設定できます。
import click
@click.command()
@click.password_option()
def main(password):
click.echo(f'{password=}, {type(password)=}')
if __name__ == '__main__':
main()> python test.py
Password:
Repeat for confirmation:
password='18', type(password)=<class 'str'>本記事ではオプション解析ライブラリclickのpromptオプションをご紹介しました。promptオプションは、オプションが指定されなかった場合に、入力を促すメッセージを表示します。対話的にオプション引数を渡したい場合などに便利です。
また、入力を隠したり再確認用のメッセージを表示したりすることができるため、パスワード用のpromptオプションも簡単に設定できます。
clickに関するほかの記事は以下をご覧ください。
-
【対話オプション】Clickのprompt
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
-
[Yes/No]Clickのブールフラグオプション
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
-
【文字列や整数だけではない】オプション解析ライブラリClickのtype指定
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
コツコツさんのブログ 