2013-06-07 1 views
7

어떤 이유에서든 프로그램에서 위치 인수를 사용하지 않고 "optional"인수 만 사용하여 인수가 실제로는 narg='?' 또는 action='store_true'과 같은 기능으로 옵션인지 여부를 제어합니다. 따라서 도움말 텍스트의 "선택적 인수"는 오해의 소지가 있습니다. 단순히 "논증"으로 표시 할 수 있습니까? 고맙습니다.argparse에서 텍스트 "optional arguments"를 변경하는 방법

+0

잠깐, 선택적 인수를 필수 항목으로 지정할 수 없다고 생각했습니다. – kirelagin

+0

아, 말하자면 수동으로 존재 여부를 확인하는 것입니다. 그건 미친 짓이야 ... 자신의 수표를 추가하고, 이제는 기본 동작을 재정의하려고 할 때, 위치 인수로 전환하는 것이 쉽습니다. – kirelagin

+0

@kirelagin 모든 인수에 대해 "선택적 인수"를 사용하므로 내 인수가 "위치에 민감하지 않습니다". – ziyuang

답변

8

글쎄의 argparse 소스에서 찾고 그것과 같이 parser._optionalstitle을 덮어 쓰기로 간단 나에게 보인다 : 아마

parser._optionals.title = "my mandatory arguments, they are actually optionals, but I'll check for their presence" 

나는 그것이 더러운 해킹 언급해야하고 위치 인수에 대한 전환이 매우 쉽고 선택적 인수가 (선택 사항)이기 때문에 전체 아이디어가 약간 미친 듯합니다.

+0

두 답변 모두 똑같이 좋다고 생각합니다. 그래서 만약 당신이 그/그녀는 낮은 평판을 가지고 @ falsetru에서 대답을 받아 들일 수 있습니까? – ziyuang

+0

@ziyuang 음, 물론, 나는 상관하지 않습니다. 그러나 모든 그룹과 제목 비교를 반복하지 않고도 필요한 것을 직접 수행하므로 내 대답을 사용하는 것이 좋습니다. – kirelagin

+0

나는 더 분명해야한다 : 전혀하지 않는 것이 좋다. 그러나 모든 그룹에서 반복 할 필요는 없습니다. – kirelagin

3
import argparse 

parser = argparse.ArgumentParser() 
for grp in parser._action_groups: 
    if grp.title == 'optional arguments': 
     grp.title = 'arguments' 
... 
+0

답변을 주셔서 감사 드리며 '_action_groups'을 (를) 나에게 노출시켜주십시오! 그러나 나는 어떻게 든 @ kirelagin의 대답이 더 직접적이라고 생각한다. 그래서 나는 그를 받아 들일 것이다. – ziyuang

관련 문제