오랜 인터넷 검색 결과이 문제를 방지 할 수있는 유용한 조언을 찾지 못했습니다. cmd 라이브러리에 들어가서 메서드를 재정의하기로 결정했습니다.
난에 cmd은
가 precmd을 실행하는 것이 그것을 상상
는을 onecmd 및
순차적 방법 postcmd. 나는 코드를 추적하여 onecmd가 주어진 라인을 벗어나는 주요 코드임을 확인했습니다. 구문 분석을 확인한 다음 행을 확인합니다. line이 비어 있으면 emptyline 메서드를 호출하고
lastcmd이라는 전역 변수 인 마지막 명령을 반환합니다. Emptyline 메서드를 재정의하고 내 문제가 해결되었습니다.
다음은 내가 작성한 방법입니다.
def emptyline(self):
"""Called when an empty line is entered in response to the prompt.
If this method is not overridden, it repeats the last nonempty
command entered.
"""
if self.lastcmd:
self.lastcmd = ""
return self.onecmd('\n')
그것은 큰 거래를 할 수 있지만, 경우에 대비 명심하지 않을 수 있습니다 : 여기
def emptyline(self):
"""Called when an empty line is entered in response to the prompt.
If this method is not overridden, it repeats the last nonempty
command entered.
"""
if self.lastcmd:
return self.onecmd(self.lastcmd)
그리고는 내 꺼야.
+1 자진답은 SO – msw
에 대한 감사합니다. @msw 감사합니다. 도움이되기를 바랍니다. –
이 점을 이해해 주셔서 감사합니다. 나는이 동작을 위해 cmd 모듈이 제공하는 기본 동작에 대해 당혹 스럽다. – oneself