我使用一些从this answer代码,特别是部分的,其提出了一个argparse.ArgumentTypeError
:获取参数,而不是dest的名称()
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
?)