OS | Windows 10 64bit |
Python | 3.10.2 |
Click | 8.1.3 |
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のインストールと基本的な使い…