【问题标题】:parse_args do not include None values in Namespaceparse_args 在命名空间中不包含 None 值
【发布时间】:2019-12-25 01:42:51
【问题描述】:
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}

无需手动操作。

【问题讨论】:

    标签: python argparse nonetype


    【解决方案1】:

    是的,添加argument_default=argparse.SUPPRESS (full doc)

    要全局禁止在 parse_args() 调用上创建属性,我们提供 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-06
      • 2011-07-24
      • 2015-10-09
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      相关资源
      最近更新 更多