2017-01-28 4 views
1

argparseadd_argument() 함수를 사용하여 사용자가 하나의 필수 값을 파싱하고 선택적 값을 파싱해야하는 방법은 무엇입니까? 예 : --read book [page]. page을 생략하거나 읽을 특정 페이지를 구문 분석 할 수 있습니다. 그것을 버리면 1면에서 시작됩니다.Python : Argparse - 필수 및 선택적 인수

나는 많은 작업을 볼 수 있기 때문에이 작업을 쉽게 처리 할 수 ​​있다고 생각했지만 외관상으로는 그렇지 않습니까?

저는 Python 3+ 이상을 사용하고 있습니다.

+0

'+'--read''있다고 말할 수있는 유일한 방법입니다 하나 이상의 인수가 필요합니다. 상한선을 정하는 방법이 없습니다. '?'의 사용 'page'는'page'와'read'를 연결 해제합니다. 어쨌든,'nargs' 대안으로 놀아 라. – hpaulj

답변

0
당신은 전화 내부 nargs='?'를 추가

및 기본 1의 값 (아마도 또한 type=int 숫자로 구문 분석) :

parser.add_argument('--read', dest='book', help='book to read') 
parser.add_argument('page', nargs='?', default=1, type=int, help='page number') 
+0

* book * (첫 번째 인수)가 실제로 필요하기 때문에'nargs = '+''가 더 적합합니다. nargs의 +는 하나 이상의 인수가없는 경우 오류를 반환합니다. 이 사건을 통과시킬거야. – kecer

+0

내가 아는 한,'nargs = "?"'는 선택 인자가 하나 또는 둘 이상 필요하다면 사용된다. 따라서 필수 값인'book'이 있는지 확인하지 못합니다. 맞습니까? – xvx

+0

오, 나는 completly'nargs = "+"'를 간과하고있다. 선택적 인수를 제한 할 수있는 방법이 있습니까? – xvx

관련 문제