I'm very new to using argparse so please excuse any basic mistakes.
I would like to pass at least 1 mandatory argument to a script, but depending on what is passed to this argument I would then like it to require 2 more mandatory arguments.
An example:
./script.py Update # No additional arguments required
./script.py Open 1 2 # 'Open' requires 2 additional arguments
./script.py Close 1 2 # 'Close' requires 2 additional arguments
Is this possible?
My current argparse code if that helps:
import argparse
...
if __name__ == "__main__":
parser = argparse.ArgumentParser()
argparse_m_values = [str(x) for x in range(1,3)]
argparse_m_values.append("All")
argparse_r_values = [str(x) for x in range(1,4)]
argparse_r_values.append("All")
parser.add_argument("c", choices=['Update', 'Open', 'Close'])
parser.add_argument("m", choices=argparse_m_values)
parser.add_argument("r", choices=argparse_r_values)
args = parser.parse_args()
if args.command == "Update":
l = task.LoopingCall(Update)
l.start(1.0)
reactor.run()
else:
Move(args.c,args.m,args.r)
edit from comment
parser.add_argument("command", choices=['Update', 'Open', 'Close'])
if 'Open' in sys.argv or 'Close' in sys.argv:
parser.add_argument("m", choices=argparse_m_values)
parser.add_argument("r", choices=argparse_r_values)