OS | Windows 10 64bit |
Python | 3.10.2 |
Click | 8.1.3 |
clickは、シンプルでありながら高機能なオプション解析ライブラリです。
clickのインストールと基本的な使い方は以下の記事をご覧ください。
本記事ではclickのブールフラグオプションについてご紹介します。
ブールフラグオプションは、そのオプションが実行時に指定されていればTrue
またはFalse
と解釈されます。
clickではブールフラグオプションの設定方法は以下の3通り用意されています。
'/'
で区切るis_flag
をTrue
に設定confirmation_option
でデコレート
True
となるオプション名とFalse
となるオプション名をスラッシュで区切ることで、clickは自動的にブールフラグオプションとして認識されます。
以下はTrue
となるオプションに-y
,--yes
を、False
となるオプションには-n
,--no
と設定している例です。
import click
@click.command()
@click.option('-y/-n', '--yes/--no')
def main(yes):
click.echo(f'{yes=}, {type(yes)=}')
if __name__ == '__main__':
main()
> python test.py -y
yes=True, type(yes)=<class 'bool'>
> python test.py -n
yes=False, type(yes)=<class 'bool'>
どちらのオプションも指定しない場合は、デフォルトでFalse
が格納されます。@click.option
メソッドのdefault
にTrue
を設定することで、デフォルトをTrue
にすることも可能です。
> python test.py
yes=False, type(yes)=<class 'bool'>
また、False
となる部分のみ、つまり'/'
の右部分のみの別名指定することも可能です。ただし、'/'
の左部分に空白を入れる必要があります。
import click
@click.command()
@click.option('-y/-n', '--yes/--no', ' /--none')
def main(yes):
click.echo(f'{yes=}, {type(yes)=}')
if __name__ == '__main__':
main()
> python test.py --none
yes=False, type(yes)=<class 'bool'>
また、オプションにすでに'/'
が含まれている場合は、';'
で区切ることも可能です。
import click
@click.command()
@click.option('/yes;/no')
def main(yes):
click.echo(f'{yes=}, {type(yes)=}')
if __name__ == '__main__':
main()
> python test.py /no
yes=False, type(yes)=<class 'bool'>
@click.option
メソッドの引数is_flag
をTrue
に設定すると、そのオプションはフラグオプションとして認識されます。
import click
@click.command()
@click.option('-y', '--yes', is_flag=True)
def main(yes):
click.echo(f'{yes=}, {type(yes)=}')
if __name__ == '__main__':
main()
> python test.py -y
yes=True, type(yes)=<class 'bool'>
> python test.py
yes=False, type(yes)=<class 'bool'>
@click.option
メソッドの引数default
をTrueに設定することで逆にすることもできます。
import click
@click.command()
@click.option('-n', '--no', is_flag=True, default=True)
def main(no):
click.echo(f'{no=}, {type(no)=}')
if __name__ == '__main__':
main()
> python test.py -n
no=False, type(no)=<class 'bool'>
> python test.py
no=True, type(no)=<class 'bool'>
@click.conrimation_option
でデコレートすることで、prompt付きのブールフラグオプションを設定できます。
import click
@click.command()
@click.confirmation_option()
def main():
click.echo('yesが選択されました。')
if __name__ == '__main__':
main()
> python test.py
Do you want to continue? [y/N]: y
yesが選択されました。
> python test.py
Do you want to continue? [y/N]: n
Aborted!
本記事では、オプション解析ライブラリclickのブールフラグオプションをご紹介しました。ブールフラグオプションはオプションがしていた場合True
またはFalse
として格納されるオプションです。フラグによって動作を変えたい場合に非常に便利です。
click
に関するほかの記事は以下をご覧ください。
-
【対話オプション】Clickのprompt
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
-
[Yes/No]Clickのブールフラグオプション
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
-
【文字列や整数だけではない】オプション解析ライブラリClickのtype指定
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…