2012-07-16 3 views
9

[+-]a,b,c,d과 같은 플래그를 구문 분석하는 방법은 argparse에 있습니까? Python argparse 토글 플래그

foo.py +s -b 

는 Windows attrib 또는 리눅스 chmod에 의해 수행 훨씬처럼 bdests와 False의 dest에 진정한 저장해야합니다.

현재 +s-s을 각각 store_truestore_false으로 사용하고 있습니다. 그러나 두 번 각 플래그를 나열 그것으로 추한 도움 (+ A & -a)을 생성

또 다른 해결 방법은 수동으로 을 어떻게 든 더 쉽게 보인다 (정규 표현식으로 확장 인수를 구문 분석하고 사용자 정의 설명을 사용하는 것입니다

하지만 난 그냥 그 자체 argparse 사용하여 같은 일을 수행 할 수있는 사용하는 것도이 있다면 주위를 둘러 보면 싶다고하기 전에.

당신은 하나의 add_argument 호출에 모두 -s+s을 전달하고, 사용자 지정 작업을 사용하여이 작업을 수행 할 수

답변

5

:

class ToggleAction(argparse.Action): 
    def __call__(self, parser, ns, values, option): 
     setattr(ns, self.dest, bool("-+".index(option[0]))) 
ap = ArgumentParser(prefix_chars='-+') 
ap.add_argument('-s', '+s', action=ToggleAction, nargs=0) 

ap.parse_args(['+s']) 
Namespace(s=True) 

ap.parse_args(['-s']) 
Namespace(s=False) 
+0

어쨌든 나는'action'이 핵심이라고 생각했지만 Action 클래스를 정의하지 못했습니다. – nbaztec

관련 문제