プログラムでpython optparseモジュールを使用していますが、値のリストを含むオプションを解析する簡単な方法を見つけるのに問題があります。
例えば:
--groups one,two,three.
options.groups[]
としてリスト形式でこれらの値にアクセスできるようにしたいと思います。カンマ区切りの値をリストに変換するoptparseオプションはありますか?または、これを手動で行う必要がありますか?
オプションコールバック を見てください。コールバック関数は、基本的なoptarg.split(',')
を使用して値をリストに解析できます。
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)
繰り返しますが、アーカイブの完全性のために、上記の例を拡張します。
(小さな変更を加えた)コードは次のようになります。
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)
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 --group 1 --group 2 --- group three
['一二三']