概要
pythonでオプション付きのコマンドを作成する方法。
argparseというモジュールを使います。
関連記事
pythonスクリプトを作成
sampleというファイル名で作成する。
sample
# !/usr/bin/env python
# -*- coding:utf-8 -*-
import argparse
'''
引数の定義
-a, -bは必須
-c, -dは任意
'''
def get_args():
    psr = argparse.ArgumentParser()
    psr.add_argument('-a', '--alpha', required=True, help='A explanation for arg called a')
    psr.add_argument('-b', '--bravo', required=True, help='A explanation for arg called b')
    psr.add_argument('-c', '--charlie', help='A explanation for arg called c')
    psr.add_argument('-d', '--delta', help='A explanation for arg called d')
    return psr.parse_args()
if __name__ == '__main__':
    args = get_args()
    print(args.alpha)
    print(args.bravo)
    print(args.charlie)
    print(args.delta)
help
--helpもしくは-hを指定する。
$ ./sample  --help
usage: sample [-h] -a ALPHA -b BRAVO [-c CHARLIE] [-d DELTA]
optional arguments:
  -h, --help            show this help message and exit
  -a ALPHA, --alpha ALPHA
                        A explanation for arg called a
  -b BRAVO, --bravo BRAVO
                        A explanation for arg called b
  -c CHARLIE, --charlie CHARLIE
                        A explanation for arg called c
  -d DELTA, --delta DELTA
                        A explanation for arg called d
必須オプションである-a, -bを指定しないとエラーとなる。
$ ./sample
usage: sample [-h] -a ALPHA -b BRAVO [-c CHARLIE] [-d DELTA]
sample: error: argument -a/--alpha is required
実行例
オプションを全て付与して実行する。
$ ./sample -a sample001 -b sample002 -c sample003 -d sample004
sample001
sample002
sample003
sample004
オプションは順不同。
$ ./sample -c sample003 -d sample004 -b sample002 -a sample001
sample001
sample002
sample003
sample004
必須オプションのみ指定。
$ ./sample -a sample001 -b sample002
sample001
sample002
None
None
--alphaは-a, --bravoは-b、--charlieは-c、--deltaは-dと同義。
$ ./sample --alpha sample001 --bravo sample002 --charlie sample003 --delta sample004
sample001
sample002
sample003
sample004
引数未指定の場合は無視する
import argparse
def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(description="This is a description")
    parser.add_argument(
        "-o",
        "--opt",
        help="Extra args",
        type=str,
        nargs="?",
        const=None,
        default=None,
    )
    return parser.parse_args()
nargs="?"(値は 0 個または 1 個)
その引数は “値があってもなくてもよい” という指定です。
オプション引数(--opt のようなもの)で使うと次の挙動になります。
| 入力ケース | 結果(値の入り方) | 
|---|---|
| --opt foo | foo(値が1つ与えられた) | 
| --opt | constで指定した値(未指定ならNone) | 
| ( --optなし) | defaultで指定した値(未指定ならNone) |