引数に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)
とすることで,両方指定した時にエラーを出すことが出来る.