Pythonコマンドラインインタープリターとコマンドサブコマンドコマンドラインインターフェイスの統合
-
02-10-2019 - |
質問
コマンドラインインタープリター(または「ライン指向のコマンドインタープリター」があります 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 モジュール。