我正在使用此答案中的一些代码,尤其是引发以下问题的部分argparse.ArgumentTypeError
:
raise argparse.ArgumentTypeError(
"argument '{f}' requires between {nmin} and {nmax} "
"arguments".format(f=self.dest, nmin=nmin, nmax=nmax))
但是,我还将append
动作行为添加到我的子类'__call__()
中,这意味着这些重复参数中的一个或多个可能格式不正确并可能引发ArgumentTypeError
.
因此,当我在解析器中将其用于此类参数时:
parse = argparse.ArgumentParser()
parser.add_argument("-a", "--append-arg", action=append_range(2,3), default=[])
我因输入错误数量的参数而出错,我得到如下信息:
argparse.ArgumentTypeError: argument 'append_arg' requires between 2 and 3 arguments
太好了,这就是我希望它被使用的方式。但是现在参数列表append_arg
在命名空间中命名。我希望它被命名list_of_repeated_args
或其他。所以如果我这样做:
parser.add_argument("-a", "--append-arg", action=append_range(2,3), default=[], dest="list_of_repeated_args")
然后我得到了这个错误:
argparse.ArgumentTypeError: argument 'list_of_repeated_args' requires between 2 and 3 arguments
那不是我想要的。当然,我可以更改函数以将我想要的名称作为参数,但我只想自动使用该名称。有没有办法做到这一点?(即,我应该放置什么而不是f=self.dest
?)