내가 실행하려고하는 커맨드 라인 스크립트는 값이 없으면 기본값을 네임 스페이스에 삽입하거나 제공된 인수를있는 그대로 가져옵니다. ('- 병합을'= 병합)사용자 정의 액션을 추가하기 위해 argparse.Action을 서브 클래스 화하는 방법은 무엇입니까?
네임 스페이스 :이처럼 보이는 인수 파서 네임 스페이스 초래
myscript.py
--merge :그래서 나는이 작업을 수행 할 수 내가 전화하면 그렇지
,
myscript.py
네임 스페이스 (= 'DONTMERGE을'병합) 내가 여기에 지정된대로 나는 argparse.Action 클래스의 전화를 사용자 정의 작업을 수행 할 수 방법을 하위 클래스 필요가 있다고 생각
:네임 스페이스는 다음과 같이한다 https://pymotw.com/2/argparse/을하지만 어떻게하는지 알아낼 수 없습니다. 내가 예상 결과를받지 못했습니다, 불행하게도
class CustomAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if isinstance(self.values, None):
self.values = 'NOMERGE'
else:
self.values = '--nomerge'
setattr(namespace, self.dest, values)
:
나는 이런 식으로 뭔가 트릭을 할 것이라고 생각했다.
왜 다만'store_const' 인수를 사용하십시오? – khelwood
나는 store_const를 시도했는데 문제는 myscript와 같은 추가 인수를 제공해야한다는 것입니다. myscript --merge someotherarg 명령 줄을 통해 제공된 인수는 다른 스크립트로 파이프되어 다른 곳에서는 동작을 변경할 수 없습니다. –
링크 된 기사를 보면'setattr' 호출이 한 단계 더 들여 쓰기되어야합니다. – FamousJameous