この回答のコードの一部、特に発生する部分を使用してい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
ますか?)