3
4

More than 5 years have passed since last update.

PythonでCLIツールを作成するのにdocoptでパラメータのパーサー作成を自動化する

Last updated at Posted at 2018-10-30

概要

Unity ML-Agentsを利用していて、CLIの実装にdocoptというモジュールを利用していて、パラメータのバリデーションをいい感じにやってくれて便利そうだったので、お試ししてみました。

docopt...
http://docopt.org/

使い方

上記サイトをみたらわかると思いますが、CLIのドキュメントをインターフェース定義として、パラメータのパーサーを自動的に定義してくれるみたいです。素敵。

docopt helps you:

  • define the interface for your command-line app, and
  • automatically generate a parser for it.

試しにCLIツールを実装してみます。
仮想環境を作成するか、Dockerを利用するかなどはお好みで。

> mkdir 任意のディレクトリ
> cd 任意のディレクトリ
> python -m venv venv
> . venv/bin/activate
> pip install docopt
> touch hoge.py
hoge.py
from docopt import docopt


if __name__ == '__main__':

  _USAGE = '''
  実行しても何もしないツール

  Usage:
    hoge run <name> [--foo=<n>]
    hoge -h | --help

  Options:
    -h --help     ヘルプを表示
    --foo=<n>     よくわからないオプション [default: 3]
  '''
  params = docopt(_USAGE)
  print(params)

はい。

実際に実行してみます。

> python hoge.py
Usage:
    hoge run <name> [--foo=<n>]
    hoge -h | --help
> python hoge.py run
Usage:
    hoge run <name> [--foo=<n>]
    hoge -h | --help
> python hoge.py run hoge
{'--foo': '3',
 '--help': False,
 '<name>': 'hoge',
 'run': True}
> python hoge.py run hoge --foo 50
{'--foo': '50',
 '--help': False,
 '<name>': 'hoge',
 'run': True}
> python hoge.py run hoge --foo=100
{'--foo': '100',
 '--help': False,
 '<name>': 'hoge',
 'run': True}
> python hoge.py --help
  実行しても何もしないツール

  Usage:
    hoge run <name> [--foo=<n>]
    hoge -h | --help

  Options:
    -h --help     ヘルプを表示
    --foo=<n>     よくわからないオプション [default: 3]

Usageに書いているとおりにパラメータ指定がされていないと弾いてくれます。

まとめ

自前でパーサーを実装すると地味に手間がかかるので、ドキュメントからパーサーを自動生成してくれて、とても素敵です。

実装して確認するのが、面倒!ってときは下記URLでブラウザ上で動作検証をすることができます。ぜひお試しあれ^^

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4