蛇ノ目の記

技術のことも。そうでないことも。

argparseを練習してみる

これまでコマンドライン引数を取得するときはsys.argvを使ってきていた。しかし先人の書いたコードを読んでみるとargparseが使われている。sys.argvでなくargparseを使う理由があるはず、ということで何が嬉しいのか考えてみた。

  • 引数を付けないとusageを表示してくれる。
    • sys.argvではIndexError: list index out of rangeが発生する。
$ python arithmetic.py
usage: arithmetic.py [-h] [-a] [-s] [-m] [-d] N N
arithmetic.py: error: too few arguments
  • -h --helpでヘルプが表示できる。
$ python arithmetic.py --help
usage: arithmetic.py [-h] [-a] [-s] [-m] [-d] N N

Calculate 2 integers.

positional arguments:
  N                     Integers for accumlator

optional arguments:
  -h, --help            show this help message and exit
  -a, --addition        Addition
  -s, --subtraction     Subtraction
  -m, --multiplication  Multiplication
  -d, --division        Division
  • python スクリプト名.py Optional引数 位置指定引数だけでなく、git add foo.pyのようなサブコマンド(ここではadd)も作れる。

以下を参考に四則演算を行うCLIツールを作ってみた。今回は位置指定引数Optional引数を使うタイプ。

16.4. argparse — コマンドラインオプション、引数、サブコマンドのパーサー — Python 3.6.1 ドキュメント

Argparse チュートリアル — Python 3.6.1 ドキュメント

argparse練習用 四則演算を行うCLIツール

実行結果は以下のようになる。

$ python arithmetic.py -a -s -m -d 100 20
100x20=2000
100+20=120
100-20=80
100/20=5

ゼロ除算してみる。

$ python arithmetic.py -d 100 0
ZeroDivisionError

しっかり怒られる。

次回はサブコマンドで四則演算させてみようと思う。こんな感じに。

$ python arithmetic.py add 20 5
20+5=25