Need some help with argparse

Ben Finney ben+python at benfinney.id.au
Tue Oct 3 16:01:22 EDT 2017


Kryptxy via Python-list <python-list at python.org> writes:
> I have a group of arguments, say: (-a, -b, -c, -d, -e) [lets call it group1]
> I have another group, say: (-z, -y, -x, -w) [lets call it group2]

Argument groups are a feature to control the help output from the
parser:
 When an argument is added to the group, the parser treats it just
 like a normal argument, but displays the argument in a separate
 group for help messages.
 <URL:https://docs.python.org/3/library/argparse.html#argument-groups>
> Now I want to get arguments of group1 and group2 separately.

You don't want to use the “argument groups” feature for that, because
that's not what it does.
> How can I get all arguments of group 1 ONLY? Same goes for group 2?
> I tried subparsers too - but they require a mandatory `positional
> argument` - which is not application's requirement.

I don't know of a way to have the argument parser know the separation
you're talking about, without using a subparser.
You will need to maintain that separation yourself, outside the parser.
One simple way (I have not tried this)::
 argument_names_by_group = {
 'foo': {'lorem', 'donec', 'fusce'},
 'bar': {'aliquam', 'nunc'},
 }
 args = parser.parse_args()
 args_by_group = {
 group_name: {
 getattr(arg_name)
 for arg_name in argument_names_by_group[group_name]
 }
 for group_name in argument_names_by_group
 }
-- 
 \ “I believe our future depends powerfully on how well we |
 `\ understand this cosmos, in which we float like a mote of dust |
_o__) in the morning sky.” —Carl Sagan, _Cosmos_, 1980 |
Ben Finney


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /