def required_length(nmin, nmax):


    class RequiredLength(argparse.Action):

        def __call__(self, parser, args, values, option_string=None):
            if not nmin <= len(values) <= nmax:
                msg = (
                    'argument "{f}" requires between {nmin} and {nmax} arguments'
                    .format(f=self.dest, nmin=nmin, nmax=nmax))
raise argparse.ArgumentTypeError(msg)
setattr(args, self.dest, values)
return RequiredLength
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-f', nargs='+', action=required_length(2, 3))
Python argparse: Is there a way to specify a range in nargs?