I\'d like to have an argument to my program that has some required parameters along with some optional parameters. Something like this:
[--print text [color
How about
def printText(args):
print args
parser = argparse.ArgumentParser()
subparser = parser.add_subparsers()
printer = subparser.add_parser('print')
printer.add_argument('text')
printer.add_argument('color', nargs='?')
printer.add_argument('size', type=int, nargs='?')
printer.set_defaults(func=printText)
cmd = parser.parse_args()
cmd.func(cmd)
Then you get something like this:
$ ./test.py -h
usage: test.py [-h] {print} ...
positional arguments:
{print}
$ ./test.py print -h
usage: test.py print [-h] text [color] [size]
positional arguments:
text
color
size
$ ./test.py print text
Namespace(color=None, func=, size=None, text='text')
$ ./test.py print text red
Namespace(color='red', func=, size=None, text='text')
$ ./test.py print text red 12
Namespace(color='red', func=, size=12, text='text')