2

raw_input() を使用して取得したコマンドを解析するために、optparse モジュールの OptionParser を使用しています。

これらの質問があります。

1.) OptionParser を使用して、この入力を解析します。(複数の引数を取得する)

my prompt> -a foo -b bar -c spam eggs 

add_option() で '-c' の action='store_true' を設定してこれを行いました。複数の引数を持つ別のオプションがある場合、たとえば -dxyz では、どの引数がどのオプションから来ているかを知る方法はありますか? また、引数の1つを再度解析する必要がある場合

my prompt> -a foo -b bar -c spam '-f anotheroption'

2.) もし私がこのようなことをしたかったら..

my prompt> -a foo -b bar 
my prompt> -c spam eggs 
my prompt> -d x y z 

各エントリは、前のコマンドによって設定された他のオプションに影響を与えてはなりません。これらを達成する方法は?

4

3 に答える 3

4

パート 2: 処理する行ごとに新しい OptionParser インスタンスが必要です。そして、このようなコマンド ループを記述するためのcmd モジュールを見てください。

于 2009-11-11T16:59:49.837 に答える
2

nargs次のように、option属性を使用して#1を解決することもできます。

parser = OptionParser()
parser.add_option("-c", "", nargs=2)
parser.add_option("-d", "", nargs=3)
于 2009-11-11T17:16:17.583 に答える
1

optparse引数が常に同じ数のパラメーターを持つことを要求することで #1 を解決します(その数が 0 の場合でも)。可変パラメーターの引数は許可されません。

通常、指定されたオプションは引数を取るか、取りません。多くの人が「オプションのオプション引数」機能を望んでいます。つまり、一部のオプションは、見れば引数を取り、見なければ取りません。これは、解析があいまいになるため、多少物議を醸しています。「-a」がオプションの引数を取り、「-b」が完全に別のオプションである場合、「-ab」をどのように解釈しますか? このあいまいさのため、optparse はこの機能をサポートしていません。

#2 を解決するには、以前の値を に再利用しないことparse_argsで、更新ではなく新しい値オブジェクトを作成します。

于 2009-11-11T17:07:44.247 に答える