Pythonコマンドラインインタープリターとコマンドサブコマンドコマンドラインインターフェイスの統合

StackOverflow https://stackoverflow.com/questions/3703824

質問

コマンドラインインタープリター(または「ライン指向のコマンドインタープリター」があります Pythonドキュメント のために cmd モジュール)コマンドラインユーティリティインターフェイスを追加したいプログラム用。

たとえば、セッションは次のようになりました:(% シェルプロンプトの場合、 :) 私のカスタムプロンプトです)
% tasks (コマンドラインインタープリターを呼び出す)
:) clockHours Teaching_Sara_to_coregister_T1_to_T2
:) exit

さらに、このインターフェイスが必要です。
% tasks clockHours Teaching_Sara_to_coregister_T1_to_T2

コマンドラインユーティリティのサブコマンドにマッピングされたカスタムインタープリターコマンドを想定しています。これらを一緒に行うためのライブラリが存在しますか?完了コードを2回書き、コマンド構造コードを2回記述する必要がないのは素晴らしいことです。そうでない場合は、この動作を実装しようとする場合、またはそれがどれほど有用であるかについての考えがありますか?

明らかに、私は単純な一時変数の利点を失います。だからこそ、私は最初から通訳者アプローチを使用していましたが、私のカスタムインタープリターコマンドの多くはこの動作に依存していないか、それを要求しないように簡単に変更できます - それはそれですコマンドラインユーティリティサブコマンドが欲しいサブセット。

役に立ちましたか?

解決

cmd 私があなたの問題を正しく理解している場合、モジュールはあなたが望むものに十分であるかもしれません。

最終的なソリューションは、例以下に近い場合があります。

import cmd
import sys

class MyCmd(cmd.Cmd):
    def do_hello(self, line):
        print "hello"
    def do_exit(self, line):
        return True

if __name__ == '__main__':
    my_cmd = MyCmd()

    if len(sys.argv) > 1:
        my_cmd.onecmd(' '.join(sys.argv[1:]))
    else:
        my_cmd.cmdloop()

この行動を与える:

C:\_work\home>jython cmdsample.py hello
hello

C:\_work\home>jython cmdsample.py
(Cmd) hello
hello
(Cmd) exit

C:\_work\home>

他のヒント

あなたが役に立つと思うかもしれないもう一つのことはです cmdln モジュール。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top