python - parse_args 命名空间中不包含 None 值

标签 python argparse nonetype

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/

相关文章:

python - 不断收到非类型错误

python - 确定变量的类型是 python 中的 NoneType

python - 如何在Python中将所有引用变量设置为None?

python - HMAC-SHA256 与 CBC 模式下的 AES-256

python - 使用 numpy 连接两列

python - 评估在命令行上传递的公式

python - 限制命令行选项的值

python - 选择超过 1 列不是 NaN 的 Pandas 行

python - 将参数从主窗口传递到弹出的 Qdialog 窗口

python argparse - 在没有参数的情况下向子解析器添加操作?