While using python\'s cmd.Cmd to create a custom CLI, how do I tell the handler to abort the current line and give me a new prompt?
Here is a minimal example:
Just add this inside the class Console(cmd.Cmd)
:
def cmdloop(self):
try:
cmd.Cmd.cmdloop(self)
except KeyboardInterrupt as e:
self.cmdloop()
Forget all the other stuff. This works. It doesn't make loops inside of loops. As it catches KeyboardInterrupt
it calls do_EOF
but only will execute the first line; since your first line in do_EOF
is return do_exit
this is fine.
do_exit
calls postloop
.
However, again, it only executes the first line after cmd.Cmd.postloop(self)
. In my program this is print "\n". Strangely, if you SPAM ctrl+C you will eventually see it print the 2nd line usually only printed on ACTUAL exit (ctrl+Z then enter, or typing in exit).