2013-10-29 1 views
0

질문이 3 개 있습니다.argparse를 사용하여 올바르게 사용하는 방법에 대한 설명이 필요합니다.

1). 인수의 순서에 대해 걱정하지 않고이 python 명령 행 프로그램을 사용할 수 있기를 바랍니다. 이전에 sys.argv를 사용하고 있었고 사용자가 다음과 같은 스크립트를 사용하게했습니다. mypyscript.py create indexname http://localhost:9260 clientMap.json 내 사용자는 주문을 기억해야합니다. 다음과 같이 입력하십시오 : mypyscript.py -i indexname -c create -f clientMap.json -u http://localhost:9260 어떻게 주문을 절단했는지 확인하십시오.

2). 내 코드에서 조건부 논리 으로 사용할 내 명령 줄 변수는 무엇입니까? args.command-type을 통해 액세스해야합니까? 대시가 괜찮습니까?

3). file-to-index 만 선택적 매개 변수입니다. add_argument에 some optional = True 매개 변수 또는 뭔가를 전달할 수 있습니까? 어떻게 처리 할 수 ​​있습니까?

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument("-c","--command-type", help="The command to run against ElasticSearch are one of these: create|delete|status") 
parser.add_argument("-i","--index_name", help="Name of ElasticSearch index to run the command against") 
parser.add_argument("-u", "--elastic-search-url", help="Base URl of ElasticSearch") 
parser.add_argument("-f", "--file_to_index", default = 'false', help="The file name of the index map") 

args = parser.parse_args() 


print args.elastic_search_url 
+0

그냥 [docopt] (http://docopt.org/)를 사용하십시오 –

답변

1
  1. 문제는 여기에 무엇입니까? 개인적으로는 유스 케이스에 달려 있다고 생각합니다. 예전 시스템에 대해 말할 것이 있습니다. 특히 서브 파서와 함께 사용할 때.

  2. 대시 요구하는 어떤 argparse을 알려주는 required=True 인수가 있습니다 기본 및 일반적으로 이해 방법

  3. 입니다. 그것은 자동으로 검증하는 정규 표현식을 추가하는 것을 고려 할 수있는 URL의 경우, create,delete,status 또한

    에 제약을받을 수 있도록 내가 choices 매개 변수를 사용하여 추천 할 것 command-type를 들어

, 당신은 추가 할 수 있습니다 이 매개 변수는 type입니다. 당신이 그것을가 예상대로 그 일을한다고 생각

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument(
    '-c', 
    '--command-type', 
    required=True, 
    help='The command to run against ElasticSearch', 
    choices=('create', 'delete', 'status'), 
) 
parser.add_argument(
    '-i', 
    '--index_name', 
    required=True, 
    help='Name of ElasticSearch index to run the command against', 
) 
parser.add_argument(
    '-u', 
    '--elastic-search-url', 
    required=True, 
    help='Base URl of ElasticSearch', 
) 
parser.add_argument(
    '-f', 
    '--file_to_index', 
    type=argparse.FileType(), 
    help='The file name of the index map', 
) 


args = parser.parse_args() 

print args 

:

는 여기에 귀하의 인수 코드의 내 버전입니다.

+0

질문 1의 유스 케이스를 제공해주었습니다. 저는 Python을 처음 접했고 확실히 argparse했습니다. 정교하게 제발 주시겠습니까? 내 진짜 관심사는 질문 3과 관련되어 있으므로 질문 1입니다. add_argument 메소드의 매개 변수에서 required = True가 필요하지 않습니다. 그리고 나는 args가 너무 적다는 오류를 얻는다. –

+0

방금 ​​게시 한 버전을 사용해 볼 수 있습니까? 나는 그것이 당신이 원하는 것을해야한다고 믿는다 : – Wolph

+0

'FileType' 사용은 초보자에게 혼동을 줄 수있다. – hpaulj

관련 문제