1. ホーム
  2. python

[解決済み] Python argparse: デフォルト値または指定された値

2022-01-25 20:45:10

質問

オプションの引数で、値が指定されずにフラグだけが存在する場合はデフォルトの値になり、ユーザーが値を指定した場合はデフォルトではなくユーザーが指定した値を格納するようにしたいのですが、可能でしょうか?このためのアクションはすでにあるのでしょうか?

一例です。

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

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

どのように解決するのですか?

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または1の引数を意味する
  • const=1 引数が0個の場合のデフォルトを設定します。
  • type=int は引数をint型に変換します。

ご希望の場合 test.py を設定します。 example がない場合でも1になります。 --example が指定されている場合は、インクルード default=1 . つまり

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

では

% test.py 
Namespace(example=1)