2016-03-20 9 views
0

コマンドラインオプションと引数のようなシーケンスを解析できるPythonモジュールはありますか?オプション値は文字列ではありません。それは私がこのような配列を有していても、次のとおりです。ここですべての引数が文字列であると仮定しないPython引数パーサー

("--foo", foo, "--bar", bar1, bar2, baz) 

"--foo""--bar"は、任意のオブジェクトである文字列と他のものです。私はそれを定義できるようにしたい。 "--foo"は1つの引数をとり、"--bar"は2つをとり、これらのオプションを解析することなく、これらのオプションに続くものを読み込むだけです。

私は多分nargsまたはカスタムargparse.Actionと標準​​を使用しようと思いましたが、それでもこれらの事で所定の位置には、各引数が文字列であることを期待し、それはそれで始まるものを読むことができない場合は例外が発生します。

更新:驚くべきことに古いoptparseがこれを行うことができます。

+1

たとえば、コマンドラインの例が役立つかもしれません。 – arekolek

+0

あなたは答えがあれば、それを投稿すること自由に感じてください。 'Answer Your Question'の画面の下にボタンがあります。 – zondo

+0

これはコマンドラインではなく、別のアプリケーションから組み込みのPythonインタプリタへの関数呼び出しに似ています。深く根深い多くの理由から、私はその関数呼び出しをオプション、位置パラメータ、さらにはサブコマンドでコマンドラインに似せるようにしたいと考えています。 –

答えて

0

驚いたことに、古いoptparseはこれをそのまま使用しました。つまり:

>>> class UniqueSnowflake(object): pass 
... 
>>> parser = optparse.Parser() 
>>> parser.add_option("--foo", type="string") # means 'as is' 
>>> parser.parse(["--foo", UniqueSnowflake()]) 
(<Values at 0x... {'foo': <...UniqueSnowflake object at 0x...>}>, []) 
関連する問題