Python: cmd execute last command while prompt and empty line

戏子无情 提交于 2019-11-30 18:29:21
def emptyline(self):
         pass

Will do just fine!

After a long googling I could not find a valuable advise to prevent this. I decide to go inside the cmd library and override the method.

I figured it out that cmd execute precmd, onecmd and postcmd methods sequentially. I traced the code and see that onecmd is the main one which exetues the given line. It checks parses then check the line. If line is empty it calls the emptyline method and it returns the last command which is a global variable called as lastcmd. I override the emptyline method then my issue got fixed.

Here is the method I've written override.

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)

And here is mine:

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')

It might not be a big deal but keep that in mind just in case.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!