주어진:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo')
pa.add_argument('--bar')
print pa.parse_args('--foo 1'.split())
내가 어떻게 할
- “foo는 바”적어도 하나 만들 필수 :
--foo x
,--bar y
및--foo x --bar y
괜찮 - “foo는 바”의 대부분을 하나 만들 필수 :
--foo x
나--bar y
괜찮,--foo x --bar y
아니다
답변
나는 당신이 상호 배제 와 같은 것을 찾고 있다고 생각합니다 (적어도 질문의 두 번째 부분은).
이런 식으로 foo 또는 bar 만 허용되며 둘 다 허용되지는 않습니다.
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--foo',action=.....)
group.add_argument('--bar',action=.....)
args = parser.parse_args()
BTW는 방금 같은 종류의 문제를 언급하는 또 다른 질문 을 발견 했습니다.
도움이 되었기를 바랍니다
답변
모듈에서 제공하지 않는 검사가 필요한 경우 언제든지 수동으로 수행 할 수 있습니다.
pa = argparse.ArgumentParser()
...
args = pa.parse_args()
if args.foo is None and args.bar is None:
pa.error("at least one of --foo and --bar required")