引数にTrue/Falseの値を渡してargparseでパースして使いたい.
ということでメモ.
ぐぐったらこういうやり方が出てきた.
def parse():
parser = argparse.ArgumentParser(description='Argparseのテスト')
parser.add_argument('--version', action='version', version='%(prog)s 1.0')
parser.add_argument('--force', dest='force', action='store_true')
parser.add_argument('--no-force', dest='force', action='store_false')
parser.set_defaults(force=False)
params = parser.parse_args()
return vars(params)
この –force/–no-force の指定で force の値が True/False になる.デフォルトはFalse.
ただ,これだと
python hoge.py --force --no-force
みたいに両方指定することも可能なのでまずい.
そこで,mutually_exclusive_groupを使って,
def parse():
parser = argparse.ArgumentParser(description='Argparseのテスト')
parser.add_argument('--version', action='version', version='%(prog)s 1.0')
group = parser.add_mutually_exclusive_group()
group.add_argument('--force', action='store_true')
group.add_argument('--no-force', action='store_false')
parser.set_defaults(force=False)
params = parser.parse_args()
return vars(params)
とすることで,両方指定した時にエラーを出すことが出来る.