web-dev-qa-db-ja.com

Python argparse:デフォルト値または指定された値

値が指定されていないフラグのみが存在する場合に値をデフォルトとするオプションの引数が必要ですが、ユーザーが値を指定した場合はデフォルトの代わりにユーザー指定の値を格納します。このために利用可能なアクションは既にありますか?

例:

python script.py --example
# args.example would equal a default value of 1
python script.py --example 2
# args.example would equal a default value of 2

アクションを作成することはできますが、これを実行する既存の方法があるかどうかを確認したかったのです。

132
Rob
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--example', nargs='?', const=1, type=int)
args = parser.parse_args()
print(args)

% test.py 
Namespace(example=None)
% test.py --example
Namespace(example=1)
% test.py --example 2
Namespace(example=2)

  • nargs='?'は0-or-1引数を意味します
  • const=1は、引数が0の場合にデフォルトを設定します
  • type=intは引数をintに変換します

test.pyを指定しなくても--exampleexampleを1に設定する場合は、default=1を含めます。つまり、

parser.add_argument('--example', nargs='?', const=1, type=int, default=1)

それから

% test.py 
Namespace(example=1)
216
unutbu