Po długim przeglądzie google nie mogłem znaleźć cennego zalecenia, aby temu zapobiec. Decyduję się wejść do biblioteki cmd i zastąpić tę metodę.
I zorientowaliśmy się, że cmd wykonać precmd, onecmd i postcmd metod sekwencyjnie. Sprawdziłem kod i widzę, że onecmd jest głównym, który wykracza poza podaną linię. Sprawdza parsowanie, a następnie sprawdza linię. Jeśli linia jest pusta, wywołuje metodę emptyline i zwraca ostatnią komendę, która jest zmienną globalną nazywaną lastcmd. Zastanawiam się nad metodą pustego wiersza, a mój problem został naprawiony.
Oto metoda, którą napisałem zastąpić.
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)
I tu jest moje:
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')
To nie może być nic wielkiego, ale o tym pamiętać na wszelki wypadek.
+1 self-odpowiedzi są dobre dla SO – msw
dzięki @msw Mam nadzieję, że będzie to pomocne. –
Dziękuję za zrozumienie tego. Jestem zaskoczony domyślnym zachowaniem modułu cmd dla tej akcji. – oneself