parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-x')
parser.add_argument('--foo')
ns = parser.parse_args(['-x', 'X']) # Namespace(foo=None, x='X')
Is there any way to have parse_args
avoid including None values in the returned Namespace? So that
vars(ns) == {k:v for k,v in vars(ns).items() if v is not None}
without doing it manually.
yes, add argument_default=argparse.SUPPRESS
(full doc)
to globally suppress attribute creation on parse_args() calls, we supply argument_default=SUPPRESS:
import argparse
parser = argparse.ArgumentParser(prog='PROG',argument_default=argparse.SUPPRESS)
parser.add_argument('-x')
parser.add_argument('--foo')
ns = parser.parse_args(['-x', 'X'])
now:
>>> ns
Namespace(x='X')