을 사용하여 스크립트를 만들었습니다 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')