Python Optparse list
Solution 1
Look at option callbacks. Your callback function can parse the value into a list using a basic optarg.split(',')
Solution 2
S.Lott's answer has already been accepted, but here's a code sample for the archives:
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)
Solution 3
Again, just for the sake of archive completeness, expanding the example above:
- You can still use "dest" to specify the option name for later access
- Default values cannot be used in such cases (see explanation in Triggering callback on default value in optparse)
- If you'd like to validate the input, OptionValueError should be thrown from foo_callback
The code (with tiny changes) would then be:
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)
Solution 4
With optparse, to get a list value you can use action '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
Then call your program like this:
$ python demo.py --group one --group two --group three
['one', 'two', 'three']

Daniel Delaney
C#/.NET Developer. Recovering C++ user. Coffee lover.
Updated on March 08, 2020Comments
-
Daniel Delaney about 3 years
I'm using the python optparse module in my program, and I'm having trouble finding an easy way to parse an option that contains a list of values.
For example:
--groups one,two,three.
I'd like to be able to access these values in a list format as
options.groups[]
. Is there an optparse option to convert comma separated values into a list? Or do I have to do this manually?