@Honza Osobne의 (현재 승인 된) 답변에 대한 @kcpr의 의견을 해결하기 위해
불행히도 작동하지 않으면 인수가 기본값을 정의했습니다.
먼저 인수가 옵션을 Namespace
제공 하는 객체 abd default=argparse.SUPPRESS
(@hpaulj 및 @Erasmus Cedernaes 답변 및이 python3 doc 참조 )와 비교하여 제공되었는지 확인하고 제공 되지 않은 경우 기본값으로 설정할 수 있습니다.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--infile', default=argparse.SUPPRESS)
args = parser.parse_args()
if 'infile' in args:
# the argument is in the namespace, it's been provided by the user
# set it to what has been provided
theinfile = args.infile
print('argument \'--infile\' was given, set to {}'.format(theinfile))
else:
# the argument isn't in the namespace
# set it to a default value
theinfile = 'your_default.txt'
print('argument \'--infile\' was not given, set to default {}'.format(theinfile))
용법
$ python3 testargparse_so.py
argument '--infile' was not given, set to default your_default.txt
$ python3 testargparse_so.py --infile user_file.txt
argument '--infile' was given, set to user_file.txt
isset()
(힌트 : Python은 PHP가 아닙니다)?hasattr()
대신에, 아마도 그랬습니까 ? 대신 옵션에 대한 기본값을 설정하도록 argparse를 구성하지 않는 이유는 무엇입니까?