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