nested subparsers with argparse
Chris Withers
chris at simplistix.co.uk
Mon Aug 23 10:19:30 EDT 2010
Chris Withers wrote:
> Hi All,
>
> I'm looking to build a script that has command line options as follows:
>
> ./myscript.py command subcommand [options]
>
> I can do up to the command [options] bit with add_subparsers in
> argparse, but how do I then add a second level of subparsers?
Answering my own question, here's what worked for me:
"""
from argparse import ArgumentParser
from mock import Mock
m = Mock()
parser = ArgumentParser()
subparsers = parser.add_subparsers()
agroup = subparsers.add_parser('a')
command = subparsers.add_parser('b')
command.set_defaults(func=m.b)
subparsers = agroup.add_subparsers()
command = subparsers.add_parser('aa')
command.set_defaults(func=m.a.a)
command = subparsers.add_parser('ab')
command.set_defaults(func=m.a.b)
options = parser.parse_args()
options.func(options)
print m.method_calls
"""
If there's anything I could have done better, please let me know!
Chris
More information about the Python-list
mailing list