Pythonでbool値の引数をargparse

Pocket

引数に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)

とすることで,両方指定した時にエラーを出すことが出来る.

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください