2017-01-26 2 views
0

저는 argparse를 사용하고 있으며 옵션을 사용하여 옵션을 제한하려고합니다. , 번호km 번호센티미터 번호미터을 : 허용되는 값에 대한 python argparse를 사용하여 어떻게 딱 맞는 선택을 할 수 있습니까?

, 나는의 형식으로 입력을 찾고 있어요. 예 : 3493cm. 나는 그것이 km, cm 또는 m으로 끝나는 한 그 숫자가 얼마인지 상관하지 않는다.

이 나는 ​​시도했다 : 작동하지 않았다

parser.add_argument('-d','--distance', 
        choice=['*m','*km','*cm']) 

.

파이썬을 배우려는 노력의 일환으로 인수로부터 입력을받는 작은 단위 변환 스크립트를 작성하기로 결정했습니다.

감사합니다.

답변

0

choices은이 방법으로 사용할 수 없습니다. argparse에서 사용하는 시험은 사전의 목록 튜플 키 문자열 일치

astr in choices 

이다. 특수 클래스는 * 패턴과 일치 할 수 있지만 더 고급입니다.

choices의 대안은 사용자 정의 type 기능을 작성하는 것입니다. 또는 구문 분석 후 해당 함수를 값에 적용하십시오.

첫 번째 작업은 문자열이 우리가 포함에 대해 이야기 할 수있는 테스트 작업을 일단 실행

mytest(args.distance) 

를 분석 한 후 귀하의 기준

def mytest(astr): 
    if astr ...: 
     return astr 
    else: 
     raise ValueError('your message') 

을 충족하는지 여부를 테스트하는 기능을 마련하는 것입니다 파서에서.

+0

감사합니다. 나는 그것이 사실이라고 생각하고 있었지만, 내가 틀렸다는 것을 희망했다. –

+0

또한 도움말 및 사용법이 어떻게 표시되는지 생각하고 싶습니다. 몇 가지 대안으로,'choices'는 멋진 디스플레이를 제공하지만 오랫동안 추악합니다. 'type'이나 자신의 테스트로, 도움말 라인이나 설명에 정보를 넣어야합니다. – hpaulj

관련 문제