如何解决如何在子解析器中添加组?
我想在子解析器中添加组。
prev_hash
parser = argparse.ArgumentParser(description="A Pipeline.")
subparsers = parser.add_subparsers(
help="Choose imagery source",dest="imagery_source"
)
animal_parser = subparsers.add_parser("animal")
group1_parser = animal_parser.add_argument_group("for_dog_config")
group1_parser.add_argument("--dog",type=str)
group2_parser = animal_parser.add_argument_group("for_cat_config")
group2_parser.add_argument("--cat",type=str)
args = parser.parse_args()
print(args)
这是命名空间的输出。
run_pipeline animal --dog hello --cat world
我想要的是 Namespace(cat='world',dog='hello',imagery_source='animal')
和 cat
分别位于不同的命名空间或字典中。是否有可能?
注意:我知道在 dog
对象中使用 add_argument_group
有其他答案,但我需要在这里使用 ArgumentParser
。
========== 更新 ============
这个代码块几乎可以满足我的需求。
subparsers = prser.add_subparsers
执行def get_arg(parser):
args = parser.parse_args()
args_groups = {}
for group in parser._action_groups:
group_dict = {a.dest: getattr(args,a.dest,None) for a in group._group_actions}
args_groups.update({group.title: argparse.Namespace(**group_dict)})
return args_groups
parser = argparse.ArgumentParser(description="A Pipeline.")
subparsers = parser.add_subparsers(
help="Choose imagery source",dest="imagery_source"
)
group1_parser = parser.add_argument_group("for_dog_config")
group1_parser.add_argument("--dog",type=str)
group2_parser = parser.add_argument_group("for_cat_config")
group2_parser.add_argument("--cat",type=str)
args = get_arg(parser)
print(args)
输出是
run_stereo_pipeline --dog hello --cat world
如您所见,现在我可以执行 {'positional arguments': Namespace(imagery_source=None),'optional arguments': Namespace(help=None),'for_dog_config': Namespace(dog='hello'),'for_cat_config': Namespace(cat='world')}
之类的操作来获取 args["for_cat_config"]
组中的所有参数。但在这种方法中,我无法指定 "for_cat_config"
来源,这是我在问题中想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。