2016-09-13 5 views
3
>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument("--dog") 
_StoreAction(option_strings=['--dog'], dest='dog', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None) 
>>> args = parser.parse_args(["--do", "fido"]) 
>>> args 
Namespace(dog='fido') 

이것은 버그 같아 보입니다. 나는 그것이 논쟁을 인식하지 못할 것으로 예상했을 것이다. 어떻게 이런 일이 일어나지 않게 할 수 있습니까?argparse가 축약 된 "긴 이름"플래그를 허용하지 않게하는 방법은 무엇입니까? (Python 2.7)

편집 : apparently this is documented behavior...

+0

[당신을위한 또 다른 옵션] (http://stackoverflow.com/a/39479562/2877364) (여기서'@ '표기법이 얼마나 널리 퍼지는지 잘 모르겠습니다.) – cxw

+0

3.5 버전에서'argparse.py' 파일을 훔칠 수 있습니다. 3.5의 모든 것은 2.7에서 작동해야하는데, get_subactions()에서 yield를 사용하는 라인이 예외입니다. 이를 위해 2.7 버전을 유지하려고합니다. 'argparse'는 단지 하나의 파일 만 사용하기 때문에 커스텀 버전을 가진 주식 버전은 쉽습니다. – hpaulj

답변

3

this

parser = argparse.ArgumentParser(allow_abbrev=False) 

을보십시오. Python 3.5 이상이 필요합니다.

+0

아, 이건 완벽 할텐데, 파이썬 2.7을 사용하고 있습니다. 이 옵션을 사용할 수없는 것 같습니다. 이 질문을 반영하도록 태그를 업데이트했습니다. – 2rs2ts