これは、引数を複数回指定できるようにすることに関する質問で取り上げられているトピックに少し関連しています。
次のようにオプションを複数回指定できるようにしたいと思います。
tool --foo 1 --foo 2 --foo 3
そしてまたこのように:
tool a b c
また、両方を同時にサポートしたいと思います。
tool a b c --foo 1 --foo2 --foo 3
これは次の場合に正常に機能します。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo', nargs='*', action='append')
parser.add_argument('--foo', nargs='*', dest='foo', action='append')
結果リストは簡単にフラット化できます。
args = parser.parse_args('a b c --foo 1 --foo 2 --foo 3'.split())
args.foo = [el for elements in args.foo for el in elements]
収量:
>>> args
Namespace(foo=['a', 'b', 'c', '1', '2', '3'])
ユーザーが1つの引数を指定するとすぐにデフォルトが使用されないように、デフォルト値を追加するにはどうすればよいですか?
default=[['spam']]
呼び出しの1つだけに追加する場合add_argument()
、デフォルトは常に結果の一部です。ユーザーが自分で引数を指定するとすぐに、argparseを取得してそれを単独で削除することはできません。
私はargparse
すでにそれ自体を提供しているもので解決策があることを望んでいます。