2011-01-10 8 views
2

Cmdモジュールを使用してPythonでコマンドラインツールを作成しています。Python Cmdモジュールのパラメータの解析

resize -file all -height 100 -width 200 -type jpeg 

または

resize -file 'a file.jpg' -type png -height 50 -width 50 

[編集]明確にするために、上記のコマンドがあることから、私のコマンドラインアプリケーションに、NOTを入力することです。

は、私は、次のようなコマンドを発行することができるようにしたいですターミナル。上記の行は、私のCmdモジュールのdo_resize(self、line)メソッドを呼び出し、パラメータを文字列として渡します。このため、OptParseとargparseは、sys.argvからのパラメタだけを取得するように見えるため、必要な処理をしません。

一部のパラメータは必須で、一部はオプションです。他のものが使用されているときに必要となるものもある。

パラメータ文字列を解析するにはどうすればよいですか?私はPythonでこれを簡単にするツールがあると読んでいますが、私が探しているものはわかりません。

+0

'getopt'についてはどうですか? http://docs.python.org/library/getopt.html – joksnet

+0

または代替の「argparse」:http://docs.python.org/library/argparse.html – joksnet

答えて

7

あなたはoptparse(Python用argparse 2.7以降)

編集を探しています:実際にをドキュメントのthisセクションによると、あなたは限界をdefults引数のリストを、合格(ただし機能parse_argsを呼び出すことができますto)sys.argv[1:]

たとえば、args_str = '-file all -height 100 -width 200 -type jpeg'がある場合は、parser.parse_args(args_str.split())を呼び出して、オプションを正しく解析します。

+0

第二の考えでは、私はこれが私だとは思わない探しています。限り、私は実行時に私のCmdモジュールに入力された文字列からそれらを取得しようとしている間、私はsys.argvからパラメータを取得することができます。上記の私の編集を参照してください。 –

+0

あなたは引数の任意の配列(あなたはargsの配列を取得するために文字列を分割することができます)からパラメータを取得することができます、私は私の答えを – maid450

+0

ああ更新しました。それは大丈夫です!ありがとう! –

1

私はgetoptが大好きです。

+0

私はこれを考慮しましたが、ドキュメントによればオプションの引数をサポートしていません。 –

0

shlexモジュールについてはどうですか?私はそれがまさにこの目的のためだと思います。