Dopo un lungo googling non sono riuscito a trovare un valido consiglio per evitare questo. Decido di entrare nella libreria cmd e sovrascrivere il metodo.
ho capito che cmd eseguire precmd, onecmd e postcmd metodi in sequenza. Ho rintracciato il codice e ho visto che onecmd è il principale che eccede la linea indicata. Controlla le parsès quindi controlla la linea. Se la riga è vuota, chiama il metodo emptyline e restituisce l'ultimo comando che è una variabile globale chiamata come lastcmd. Ho scavalcato il metodo della linea vuota, quindi il problema è stato corretto.
Ecco il metodo che ho sovrascritto.
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)
E qui è il mio:
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')
Potrebbe non essere un grosso problema, ma tenere a mente per ogni evenienza.
fonte
2013-05-10 09:24:31
+1 le auto-risposte sono buone per SO – msw
grazie a @msw spero che sia utile. –
Grazie per aver capito questo. Sono sconcertato dal comportamento predefinito che il modulo cmd fornisce per questa azione. – oneself