2013-05-10 11 views
9

質問が表示されない場合があります。Python:cmdプロンプトと空白行の間に最後のコマンドを実行します。

詳細を明記します。私は独自のCLIフレームワークを実装するためにpython cmdライブラリを使用しています。コマンドを入力せずにEnterボタンを押すと、最後のコマンドが実行されます。これは私がしたいことではありません。

mycli~: cmd --args 
executes command 
execution stops 
mycli~:[hit enter button] 

次にcmd -argsを再度実行します。しかし、私はちょうど新しいラインで下に行きたい。

答えて

6

私はこれを防ぐために貴重な助言を見つけることができませんでした。私はcmdライブラリの中に入り、メソッドをオーバーライドすることにしました。

IがCMDがを実行することを考え出したが、をprecmd行をonecmdとを順次方法をPOSTCMD。私はコードを辿り、onecmdが与えられた行を逸脱する主要なものであることを確認します。それは解析をチェックし、次に行をチェックします。行が空の場合は、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') 

は、それは大したことが、念のために念頭に置いてそれを維持しない場合があります。

+3

+1自己回答はSO – msw

+0

のために良いです。ありがとう@msw私はそれが役に立つと願っています。 –

+0

これを理解していただきありがとうございます。私は、このアクションのためにcmdモジュールが提供するデフォルトの動作に困惑しています。 – oneself

10
def emptyline(self): 
     pass 

うまくいく!

関連する問題