2016-11-13 2 views
1

나는 내가 위해 argparse을 사용 github create issue --title <title> --description <description> --user <user> --repo <repo>선택 사항이 아닌 정보를 얻기 위해 옵션을 사용해야 하나 더 직관적으로 보일 수 있습니까?

같은 것을 함께했다

등의 PR를 작성, REPOS를 생성, 문제를 만드는 것처럼 CLI의 일부 GitHub의 기능을 제공하는 파이썬 프로그램을 작성하는 것을 시도하고있다 이 목적을

import argparse 
parser = argparse.parser() 
parser.add_argument('create', 
        options=['issue', 'repo', 'pull') 
        action='store') 
parser.add_argument('--title', action="store", type=str) 
parser.add_argument('--description', action="store", type=str) 
parser.add_argument('--user', action="store") 
parser.add_argument('--repo') 

parser.parse_args('create issue --title title --description desc --user user --repo repo') 

나는 키워드 형태로 정보를 얻을 수있는 옵션을 --title--descriptions을 사용했다. 옵션이 선택 될 운명 동안

하지만, 구문 분석의 내 스타일에 따라 : 다음 --title, --description--user--repo이 필요 issue입니다

  • create합니다.

github create issue --title title --description desc --user user --repo repo 명령을 구문 분석하는 올바른 방법은 무엇입니까? 개조하면 되겠 어의

답변

0

먼저 부부 :이 작업과 유형이 기본값이기 때문에

parser.add_argument('--title', action="store", type=str) 

parser.add_argument('--title') 

단순화 할 수있다. --repo을 사용하면됩니다.

args = parser.parse_args() 

는 명령 줄에서 읽고 args 네임 스페이스에 값을 넣습니다.

args = parser.parse_args(['issue --title title --description desc --user user --repo repo'].split()) 

은 시뮬레이션 된 문자열 목록으로이 파서를 테스트하는 데 사용할 수 있습니다.

create을 기록했습니다.

parser.add_argument('create', choices=['issue', 'repo', 'pull')) 

args.create으로 args에 넣어 될 positional을 정의합니다. 허용되는 문자열은 choices (options 아님)입니다. 대안은 --create을 사용하는 것입니다. 이 경우 다른 인수와 마찬가지로 작동하며 허용되는 값의 한계 만 있습니다.

특정 값에 대해 몇 가지 인수가 필요하면 구문 분석 후에 테스트를 수행해야합니다.

if args.create in ['issue']: 
    if args.title is None or args.user is None: 
     parser.error('title and user required with issue') 

이것은 또한 중복으로 폐쇄 된 최근 How can I make Python argparse to have dependency 거의 중복입니다.

대안은 subparsers을 사용하는 것입니다. 하지만 문서와 이전의 [argparse] 질문에 대한 내용을 읽을 수 있습니다.

이러한 아이디어를 시도하고 새로운 질문으로 다시 돌아옵니다.

사용자에게 제한 사항을 설명하기 위해 맞춤 usage 및/또는 help 개의 단락을 작성해야합니다.