python命令提示符后的小白块_Python:在提示符下出现空白行时,cmd执行最后一个命令...

The question may be not clear enough to get.

Let me clear in details. I'm using python cmd library to implement my own CLI framework and when hit the enter button without typing any command it executes last command. This it not one I wanna do.

mycli~: cmd --args

executes command

execution stops

mycli~:[hit enter button]

Then it will execute again cmd --args. However I just want to go down with new line.

解决方案

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值