[python] 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

액션을 만들 수는 있지만 기존 방법이 있는지 확인하고 싶었습니다.



답변

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)


답변

실제로이 스크립트 에서와 같이 default인수 만 사용하면 됩니다.add_argumenttest.py

import argparse

if __name__ == '__main__':

    parser = argparse.ArgumentParser()
    parser.add_argument('--example', default=1)
    args = parser.parse_args()
    print(args.example)

test.py --example
% 1
test.py --example 2
% 2

자세한 내용은 여기에 있습니다 .


답변

차이점 :

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)

따라서 :

myscript.py => 디버그는 첫 번째 경우 7 (기본값)이고 두 번째 경우 “없음”입니다.

myscript.py --debug => 디버그는 각각 1입니다

myscript.py --debug 2 => 디버그는 각 경우에 2


답변