2012-12-27 3 views
6

내 목표는 argparse를 사용하여 파이썬 명령 줄 유틸리티를 작성하는 것이다.이 명령은 각각 다른 입력 집합을 갖고있는 여러 명령을 가지고있다.Python과 argparse : 첫 번째 인수를 기반으로 필요한 추가 인수를 변경하는 방법은 무엇입니까?

Google 문서 검색, 몇 건의 Google 검색 및 스택 오버플로를 시도해 본 결과 아무 것도 찾을 수 없었습니다. 몇 가지 가능한 솔루션을 생각할 수 있지만 추악하고 도움말 문서 및 유효성 검사를 수동으로 처리해야합니다. 나의 의구심은 이것이 이미 충분히 잘 알려진 공통적이고 효과적인 해결책을 가진 문제라고 생각하며, 나는 그것을 찾기위한 적절한 용어가 부족하거나 작은 마진으로 불분명하다. 많은 장소.

제가 지금 생각한 가장 좋은 생각은 하나의 위치 인수를 갖는 것이고, 어떻게 든 그 입력 값을 기반으로 한 일련의 추가 인수에 대해 다른 요구 사항을 갖는 것입니다. 아마 두 번 파싱 할거야? 예를 들어

, 이것은 비슷한 경우이다 : 동물

한 위치 인수가 옵션 동물을위한 고양이, 도마뱀, 물고기 고양이

, 인수 발톱, 수염이, 발은 인수 water_type 내가 물고기를 들어

필수 도마뱀, 인수 scale_color, favorite_food를 들어

필수 s가 필요합니다.

각기 다른 동물성 값에 대해 필요한 추가 인수가 정통 연습을 거치지 않고 -h로 문서화되기를 바랍니다.

필자는 주 카테고리 선택 사항마다 선택적 인수를 사용하여이 작업을 고려했습니다. 이 유틸리티는 실제로 이러한 인수 중 하나만 갖고 싶어하기 때문에 매력적이지 않습니다.이 방법을 시행하고 문서화하는 측면에서 휠을 재발 명할 필요가 없으면 필자는이를 선호합니다.

내가 좋아하는 뭔가를 할 수 :

valid_commands = ['a','b','c','d','e','f','g'] 
parser.add_argument('command', choices = valid_commands) 
parser.add_argument('inputs', nargs = '*') 

을하지만 그때 나는 각 명령의 선택에 대한 추가 인수에 좋은 입력 확인이 없습니다.

정상적인 방법이 있습니까? 확실히 몇 가지 가능한 명령과 각각에 대해 다른 필수 인수가있는 유틸리티를 작성하는 것이 일반적입니다. 나는 수표 수표와 도움 문서를 추가하여 필요로하는 대부분의 것들을 확실히 얻을 수 있었지만, 이것은 아마도 내가 처음 시도했을 때 충분히 얻을만한 가치가있는 충분한 시간을 할 것입니다.

정보를 제공해 주셔서 감사 드리며 알려 주셔서 감사합니다.

답변

7

이것은 서브 파서가 사용하는 것 같습니다. 링크 로스에 대한

http://docs.python.org/dev/library/argparse.html#argparse.ArgumentParser.add_subparsers

+0

감사합니다. 나는 지금 그것을 체크 할 것이다. –

+0

서브 파서가 내가 찾고있는 것처럼 보입니다. 구현을 현명하게 수행해야하는 것을 정확하게 파악하는 데는 약간의 시간이 걸릴 것이지만, 이것은 내 문제를 확실히 해결해줍니다. –

관련 문제