Python 使用其他命名空间/字典更新argparse命名空间

Python 使用其他命名空间/字典更新argparse命名空间,python,dictionary,argparse,Python,Dictionary,Argparse,假设我有两个argparse名称空间 parser1 = argparse.ArgumentParser() parser1.add_argument('--name', type=str, required=False, default='John') args1 = parser1.parse_args() parser2 = argparse.ArgumentParser(argument_default=argparse.SUPPRESS) parser2.add_argument(

假设我有两个argparse名称空间

parser1 = argparse.ArgumentParser()
parser1.add_argument('--name', type=str, required=False, default='John')

args1 = parser1.parse_args()

parser2 = argparse.ArgumentParser(argument_default=argparse.SUPPRESS)
parser2.add_argument('--name', type=str, required=False)

args2 = parser2.parse_args()
如何使用
args2
更新
args1
?我知道更新dicts,即

dict = {'name': 'Pete'}
dict.update(**vars(args2))

我认为这应该是可行的(未经测试),但是您还可以用另一个名称空间更新argparse名称空间吗?我可以将
args2
转换为dict以进行更新。

子parser
操作类中,
argparse.py
使用:

    subnamespace, arg_strings = parser.parse_known_args(arg_strings, None)
    for key, value in vars(subnamespace).items():
        setattr(namespace, key, value)
使用
子名称空间
中的值复制更新
名称空间
argparse
使用通用的
setattr
设置值,最大限度地减少对有效名称的假设

您也可以使用

 namespace.__dict__.update(subnamespace.__dict__)

但我还没有测试过。

这基本上就是我最后做的,谢谢!