pythonでコマンド待ち受けツールを作ってみる

  • 36
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

pythonにはcmdという非常に便利なクラスがある。これは簡単に言うと、オリジナルなコマンド待ち受けが作れてしまう。特に自分が気にっているのはアクションの補完機能が勝手に付加されるところ。

何かシンプルなツールを作る時、それは何かのファイルをパースしたり、簡単なデータを送ったり、もちろん普通にスクリプトで書いてもいいと思う。もし、シェルスクリプトなどで作るのが飽きたならば、気分転換でpythonのcmdクラスを使ってみてもいいかもしれない。

実装

ここではシンプルな実装にする。

from cmd import Cmd

class testCmd(Cmd):
    prompt = "hoge) "
    def __init__(self):
        Cmd.__init__(self)

    def do_exe(self, arg):
        print "do anything"

    def help_exe(self):
        print "help : exe"

if __name__ == '__main__':
    testCmd().cmdloop()

by gist

簡単な説明

  • prompt : 待ち受けプロンプトの文字列。設定しなければ(Cmd)になる。
  • do_xxxx : プロンプトでxxxと入力するとコール。
  • help_xxxx : プロンプトでhelp xxxと入力するとコールされる。

実行

実行すると以下のような待ち受けプロンプトになる。

hoge)

定義したアクションおよび、ヘルプを呼び出してみる

hoge) exe
    do anything
hoge) help exe
    help : exe

tabキーを押すと補完機能が味わえる

hoge)
    exe   help

おしまい

その他、unknownコマンド(default)や空白入力時(emptyline)などをオーバーライドすればよりユーザビリティが高いスクリプトになると思います。詳しくは公式ドキュメントで。

こういった簡単に便利なツールが作れるのはpythonのいいところですね。