parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-x')
parser.add_argument('--foo')
ns = parser.parse_args(['-x', 'X']) # Namespace(foo=None, x='X')
有什么方法可以让 parse_args
避免在返回的命名空间中包含 None 值吗?所以说
vars(ns) == {k:v for k,v in vars(ns).items() if v is not None}
无需手动执行。
最佳答案
是的,添加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'])
现在:
>>> ns
Namespace(x='X')
关于python - parse_args 命名空间中不包含 None 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57563483/