I script.py
에 다음 코드가 있습니다argparse에서 기본 서브 파서를 선택하는 방법은 무엇입니까?
$ python3 script.py
Namespace(command='a')
$ python3 script.py a
Namespace(command='a', thing='thing')
$ python3 script.py b
Namespace(command='b', nothing='nothing')
이와 단 하나의 문제가있다 :
import argparse
parser = argparse.ArgumentParser()
sp = parser.add_subparsers(dest='command')
sp.default = 'a'
a_parser = sp.add_parser('a')
b_parser = sp.add_parser('b')
a_parser.add_argument('--thing', default='thing')
b_parser.add_argument('--nothing', default='nothing')
args = parser.parse_args()
print(args)
나는이 세 가지 방법으로 호출 할 수 있습니다 제가을 원하는 것은 그런 내가 제로를 제공하는 경우 커맨드 라인에서의 인수는 a_parser
이 파싱을 끝내고 물건을 만드는 것입니다. 분명히 아니에요. sp.default
은 단지 command='a'
으로 설정되어 있습니다. "오 그래, 사용자가 명령 줄에서 아무런 인수도 제공하지 않았지만,이 값을 a_parser
으로 처리해야한다는 것을 알고 있습니다. Namespace(command='a', thing='thing')
! "
나는 수 있습니까? argparse 함께 할거야? 몇 가지 옵션을 찾았지만, 그 중 어느 것도 실제로 내가 제공 한 것을 제공하지 않는 것 같습니다. 나는 3 개의 다른 ArgumentParser를 만들고 각각에 인수를 전달하면서 약간의 위 j을 할 수 있다고 생각하지만, 약간의 총합이 들린다.
더 나은 옵션이 있습니까?
당신은 같은 명령 줄 프레임 워크를 조사 할 수 [절벽] (https://pypi.python.org/pypi/cliff) 또는 [클릭]를 이런 종류의 디자인 지원. – larsks
더 나은 사용 docopt – Nickpick