[python] argparse 모듈 인수없이 옵션을 추가하는 방법은 무엇입니까?

을 사용하여 스크립트를 만들었습니다 argparse.

스크립트는 옵션으로 구성 파일 이름을 가져와야하며, 사용자는 스크립트를 완전히 진행해야하는지 아니면 시뮬레이트 만해야하는지 지정할 수 있습니다.

전달할 인수 : ./script -f config_file -s또는 ./script -f config_file.

-f config_file 부분에는 문제가 없지만, 선택적이고 뒤 따르지 않아야하는 -s에 대한 인수를 계속 묻습니다.

나는 이것을 시도했다 :

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file')
#parser.add_argument('-s', '--simulate', nargs = '0')
args = parser.parse_args()
if args.file:
    config_file = args.file
if args.set_in_prod:
        simulate = True
else:
    pass

다음과 같은 오류가 있습니다.

File "/usr/local/lib/python2.6/dist-packages/argparse.py", line 2169, in _get_nargs_pattern
nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs)
TypeError: can't multiply sequence by non-int of type 'str'

그리고 ''대신에 같은 errror 0.



답변

@Felix 클링 제안 을 사용 action='store_true':

>>> from argparse import ArgumentParser
>>> p = ArgumentParser()
>>> _ = p.add_argument('-f', '--foo', action='store_true')
>>> args = p.parse_args()
>>> args.foo
False
>>> args = p.parse_args(['-f'])
>>> args.foo
True


답변

설정된 값이 필요없는 옵션을 만들려면 action [문서] 로 그것을를 'store_const', 'store_true'또는 'store_false'.

예:

parser.add_argument('-s', '--simulate', action='store_true')


답변