플래그가 지정된 값이없는 경우 기본값으로 값을 지정하는 선택적 인수를 갖고 싶지만 사용자가 값을 지정하면 기본값 대신 사용자 지정 값을 저장하고 싶습니다. 이에 대한 조치가 이미 있습니까?
예를 들면 :
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_argument
test.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