長い間グーグルで調べた後、これを防ぐための貴重なアドバイスを見つけることができませんでした。cmd ライブラリの内部に入り、メソッドをオーバーライドすることにしました。
cmd がprecmd、onecmd、およびpostcmdメソッドを順番に実行することがわかりました。コードをトレースしたところ、onecmd が指定された行を実行するメインのコードであることがわかりました。解析をチェックしてから行をチェックします。line が空の場合、 emptyline メソッドを呼び出し、 lastcmdと呼ばれるグローバル変数である最後のコマンドを返します。emptyline メソッドをオーバーライドすると、問題が修正されました。
これが私が書いたメソッドです。
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)
そして、ここに私のものがあります:
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')
大したことではないかもしれませんが、念のため覚えておいてください。