- cmd.Cmdクラスを継承したクラスを作る
- do_XXXメソッドを定義する
- cmdloopメソッドを呼ぶ
cmd.Cmdクラスを継承したクラスを作る
特に言うべきことはありません。普通に継承するだけです。
class HelloCmd(cmd.Cmd): ...
do_XXXメソッドを定義する
メソッド名の"XXX"がコマンドになります。
パラメータを受け取るためのargパラメータがポイントです。
    def do_hello(self, arg):
        print 'hello, ' + str(arg)
cmdloopメソッドを呼ぶ
クラスをインスタンス化し、cmdloopを呼ぶとREPLがスタートします。
終了するにはCtrl-Cで落とします。
>>> HelloCmd().cmdloop() (Cmd) hello Taro Hello, Taro (Cmd) Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.7/cmd.py", line 130, in cmdloop line = raw_input(self.prompt) KeyboardInterrupt 
以下Tips。必須ではありませんが、知っておくと便利です。
Ctrl-Cで無理やり落とすのはスマートじゃありません。終了するためのメソッドを定義すれば、キレイに終了します。終了するには、Trueを返します。
docstringがヘルプになる
do_XXXメソッドにdocstringを書いておくと、helpコマンドから参照できます。
参考
cmd — Support for line-oriented command interpreters
    def do_quit(self, arg):
        print 'bye'
        return True
...
>>> HelloCmd().cmdloop()
(Cmd) quit
bye
docstringがヘルプになる
do_XXXメソッドにdocstringを書いておくと、helpコマンドから参照できます。
    def do_quit(self, arg):
        '''quit cmd loop.'''
        print 'bye'
        return True
...
>>> HelloCmd().cmdloop()
(Cmd) help quit
quit cmd loop.
参考
cmd — Support for line-oriented command interpreters
0 件のコメント:
コメントを投稿