Fat*_*ana 12 python cmd command-line-interface
这个问题可能不够明确.
让我详细说明一下.我正在使用python cmd库来实现我自己的CLI框架,当按下enter按钮而不键入任何命令时,它会执行最后一个命令.这不是我想做的.
mycli~: cmd --args
executes command
execution stops
mycli~:[hit enter button]
Run Code Online (Sandbox Code Playgroud)
然后它将再次执行cmd --args.但是我只是想换新线.
经过长时间的谷歌搜索,我找不到有价值的建议,以防止这种情况发生.我决定进入cmd库并覆盖该方法.
我想通了cmd 顺序执行precmd,onecmd和postcmd方法.我跟踪代码,看到onecmd是排除给定行的主要代码.它会检查解析然后检查该行.如果line为空,则调用emptyline方法,并返回最后一个命令,该命令是一个名为lastcmd的全局变量.我覆盖了空行方法,然后我的问题得到修复.
这是我写的覆盖方法.
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)
Run Code Online (Sandbox Code Playgroud)
这是我的:
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')
Run Code Online (Sandbox Code Playgroud)
这可能不是什么大问题,但请记住以防万一.
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |