Reputation: 413
I am just new with Python and I am trying out argparse. I want to add an argument if the first argument is equal to something.
import argparse
class ArgsParser :
def __init__(self):
parser = argparse.ArgumentParser()
parser.add_argument('command')
args = parser.parse_args()
if args.command == 'a' :
parser.add_argument('-b', required=True)
args = parser.parse_args()
self.b = args.b
def main():
parser = ArgsParser();
print parser.b
if __name__ == '__main__':
main()
When I run the script using
prog.py a -b="abc"
It gives an error
prog.py: error: unrecognized arguments: -b=abc
But if I run the script using
prog.py a
The result would be
prog.py: error: argument -b is required
Upvotes: 1
Views: 302
Reputation: 309949
I think you can do this with subparsers:
>>> import argparse
>>> parse = argparse.ArgumentParser()
>>> subparsers = parse.add_subparsers()
>>> parse_a = subparsers.add_parser('a')
>>> parse_a.add_argument('-b', required=True)
_StoreAction(option_strings=['-b'], dest='b', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parse.parse_args(['a'])
usage: a [-h] -b B
a: error: argument -b is required
Upvotes: 1