如何从namesp中删除参数

2024-05-23 13:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:给定一个添加了一些参数的argparse解析器实例,是否有方法删除/删除为其定义的参数?在

为什么:考虑以下示例:

>>>import argparse
>>>parser = argparse.ArgumentParser()
>>>parser.add_argument('--imagePath', action = "store", default = 'toto')
_StoreAction(option_strings=['--imagePath'], dest='imagePath', nargs=None, const=None, default='toto', type=None, choices=None, help=None, metavar=None)
>>>args = parser.parse_args()
>>>args
Namespace(imagePath='toto')
>>>parser.add_argument('--resultPath', action = "store", default = 'titi')
_StoreAction(option_strings=['--resultPath'], dest='resultPath', nargs=None, const=None, default='titi', type=None, choices=None, help=None, metavar=None)
>>>args = parser.parse_args()
>>>args
Namespace(imagePath='toto', resultPath='titi')

如果我们在脚本后面更改args.imagePath?在

我没有找到更改值的方法,但是如果我可以删除/删除参数imagePath,就可以用新值重新定义imagePath!在


Tags: 方法noneadddefaultparser参数定义argparse
1条回答
网友
1楼 · 发布于 2024-05-23 13:26:48

就这么做吧:

args.imagePath = 'newvalue'

args是一个argparse.Namespace对象。这是一个简单的类,它只添加了一个display方法,即使用print(args)看到的内容。否则,所有普通的Python对象方法都可以工作。因此,您可以根据需要获取、设置甚至添加属性。在

parser试图将其关于命名空间对象的假设保持在最小值。它使用最通用的访问方法-hasattrgetattrsetattr。在

例如

^{pr2}$

你也可以删除,例如

del args.imagePath
delattr(args, 'imagePath')

我很想把你的标题改成“How do you delete a parameter from a namespace”(如何从命名空间删除参数)。我不认为您是要从parser本身删除参数(由add_argument创建的操作)。您的重点是通过解析创建的名称空间。在

相关问题 更多 >