OS | Windows 10 64bit |
Python | 3.10.2 |
Click | 8.1.3 |
clickは、シンプルでありながら高機能なオプション解析ライブラリです。
Pythonには標準ライブラリとしてargparseがあります。clickはargparseよりも、シンプルに記述することが可能です。
argparseに関しては以下の記事をご覧ください!
本記事では、clickのインストールと基本的な使い方をご紹介します。なお、本記事では位置引数は紹介しません。
pip install click
import click
@click.command()
@click.option('-opt', '--option')
def main(option):
click.echo(f'{option=}')
if __name__ == '__main__':
main()
> python test.py -opt 18
option='18'
まず、インストールしたclickをインポートします。次に関数を定義し、clickのデコレータでその関数をデコレーションしてあげます。するとその関数はオプションを持った実行関数となり実行時にオプションを受け取りclickがオプションをパースするようになります。
@click.command()
は関数をオプション付きの実行関数へと変換するデコレータです。
@click.option()
は実行関数が受け取るオプションを定義するデコレータです。
ここで定義したオプションは自動的に実行関数の引数名になり、オプションに渡されたオプション引数はパースされ結果をその引数に渡します。例では、-opt/--option
というオプションを定義しています。
パース結果の引数名は以下の優先順で採用されます。
- 接頭辞
--
や-
がないオプションが設定されていれば、その名前を格納先の引数名に採用
import click
@click.command()
@click.option('-opt', '--option', 'op')
def main(op):
click.echo(f'{op=}')
if __name__ == '__main__':
main()
--
付きオプションが設定されていれば、定義されたうちの最初の名前を格納先の引数名に採用
import click
@click.command()
@click.option('-opt', '--option', '--option2')
def main(option):
click.echo(f'{option=}')
if __name__ == '__main__':
main()
--
付きオプションが定義されておらず-
付きオプションが、定義されていればそのうちの最初の名前を格納先の引数名に採用
import click
@click.command()
@click.option('-opt', '-opt2')
def main(opt):
click.echo(f'{opt=}')
if __name__ == '__main__':
main()
採用された名前は接頭辞を削除し、小文字に変換します。また、それ以外の-
は_
へ変換されます。
@click.echo()
は、環境によらない堅牢なprint関数のようなものです。
引数のf文字列については以下の記事を参考にしてください。
clickではこのようにデコレーションしていくだけで簡単にオプション解析ができてしまいます。argparseの場合は、ArgumentParserを初期化し、add_argumentでオプションを追加、parse_argsを実行する必要があり、少々煩雑でした。
ヘルプメッセージ表示機能は、関数をclickでデコレーションすれば、ヘルプメッセージを表示するオプション--help
が自動で生成されます。
import click
@click.command()
@click.option('-opt', '--option')
def main(option):
click.echo(f'{option=}')
if __name__ == '__main__':
main()
> python test.py --help
Usage: test.py [OPTIONS]
Options:
--help Show this message and exit.
ヘルプメッセージ表示の短縮オプション-h
は生成されないことに注意してください。
オプションのヘルプメッセージを変更するには引数helpにメッセージを指定します。
import click
@click.command()
@click.option('-opt', '--option', help='option help message')
def main(option):
click.echo(f'{option=}')
if __name__ == '__main__':
main()
> python test.py --help
Usage: test.py [OPTIONS]
Options:
-opt, --option TEXT option help message
--help Show this message and exit.
本記事ではオプション解析ライブラリclickのご紹介をしました。argparseよりも簡単に高機能なライブラリです。
ここでは基本的な使い方にとどめましたが、ほかにも様々な使い方ができます。
-
【対話オプション】Clickのprompt
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
-
[Yes/No]Clickのブールフラグオプション
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…
-
【文字列や整数だけではない】オプション解析ライブラリClickのtype指定
clickは、シンプルでありながら高機能なオプション解析ライブラリです。clickのインストールと基本的な使い…