39

プログラムで python optparse モジュールを使用していますが、値のリストを含むオプションを解析する簡単な方法を見つけるのに苦労しています。

例えば:

--groups one,two,three. 

としてリスト形式でこれらの値にアクセスできるようにしたいと思いますoptions.groups[]。コンマ区切りの値をリストに変換する optparse オプションはありますか? または、これを手動で行う必要がありますか?

4

4 に答える 4

84

S.Lott の回答は既に受け入れられていますが、アーカイブのコード サンプルは次のとおりです。

def foo_callback(option, opt, value, parser):
  setattr(parser.values, option.dest, value.split(','))

parser = OptionParser()
parser.add_option('-f', '--foo',
                  type='string',
                  action='callback',
                  callback=foo_callback)
于 2008-12-24T21:50:34.917 に答える
40

オプションのコールバックを見てください。コールバック関数は、基本的なメソッドを使用して値をリストに解析できますoptarg.split(',')

于 2008-12-24T19:03:51.897 に答える
11

繰り返しますが、アーカイブの完全性のために、上記の例を拡張します。

  • 後でアクセスするために、「dest」を使用してオプション名を指定することもできます
  • このような場合、デフォルト値は使用できません ( optparse のデフォルト値でコールバックをトリガーするの説明を参照してください) 。
  • 入力を検証したい場合は、OptionValueError を foo_callback からスローする必要があります。

コードは(小さな変更を加えて)次のようになります。

def get_comma_separated_args(option, opt, value, parser):
    setattr(parser.values, option.dest, value.split(','))

parser = OptionParser()
parser.add_option('-f', '--foo',
                  type='string',
                  action='callback',
                  callback=get_comma_separated_args,
                  dest = foo_args_list)
于 2015-03-27T12:53:43.283 に答える
10

optparse を使用すると、リストの値を取得するためにアクション ' append 'を使用できます。

from optparse import OptionParser
parser = OptionParser()
parser.add_option("--group",
                  action="append",
                  dest="my_groups")
(options, args) = parser.parse_args()
print options.my_groups

次に、次のようにプログラムを呼び出します。

$ python demo.py --グループ 1 --グループ 2 --グループ 3

['一二三']

于 2016-12-16T18:38:16.157 に答える