2014-10-15 2 views
1

argparse에서 임의의 플래그를 허용 할 수 있습니까?argparse 임의의 플래그 허용

예를 들어, 나는 git push에 대한 래퍼가 나는 많은 있기 때문에 git push에 사용할 수있는 모든 플래그를 지정하지하는 것을 선호

gitter라고합니다.

그러나, 나는 여전히 임의의 깃발을 그 플래그가 git push에 전달해야하는 argparse위한 방법이 있나요

gitter --all --no-verify 

처럼 뭔가를 할 수 있도록하려면?

내가 gitter --fake-flag이라면 즉시 플래그를 파싱 할 필요없이 오류가 발생합니다.

답변

4

parse_known_args을 사용하면 인식 할 수없는 플래그를 목록에 남겨 둘 수 있습니다.

p = ArgumentParser() 
p.add_argument("--foo") 
args, remaining = p.parse_known_args("--foo 5 --bar --baz".split()) 

# args.foo == 5 
# remaining = ["--bar", "--baz"] 
+0

감사합니다. 나는 "--foo 5 --bar --baz".split() '을 ArgumentParser()에서 얻을 수있는 실제 플래그로 대체해야한다고 생각합니다. – Andy

+0

예. 'parse_known_args'는 어떤 * 플래그도 정의 할 것을 요구하지 않습니다; 커맨드 라인에서 정의되지 않은 것은 단순히'parse_known_args'에 의해 반환 된 튜플의 두 번째 요소에 (순서대로) 놓이게됩니다. 인식 된 플래그는 구문 분석되고 제거되며 첫 번째 요소의 특성을 설정하는 데 사용됩니다. – chepner

+0

다시 연락해 주셔서 감사합니다. ''ArgumentParser()'를 사용하여''--foo 5 --bar --baz ".split()'을 어떻게 생성하는지 알고 싶습니까? 주변을 둘러보고 난 후에'parse_args()'를 시도했지만 이것은리스트 객체로 변환 될 수없는'namespace' 객체를 반환합니다. – Andy

0

파이썬 대신 지저귐에 bash 스크립트를 사용하지 않는 이유는 무엇입니까? 같은 뭔가 :

#!/bin/bash 
git push --alwaysArg "[email protected]" 

를 실행하면 :

gitter --all --no-verify 

결과 명령은 다음과 같습니다 응답에 대한

git push --alwaysArg --all --no-verify