我有以下内容:
def parser():
p = argparse.ArgumentParser()
people = p.add_argument_group('people_list')
meg = people.add_mutually_exclusive_group()
meg.add_argument('--config-file')
g = meg.add_argument_group('people')
g.add_argument('--name')
g.add_argument('--age')
return p
p = parser()
p.parse_args(['--config-file', 'cfg_file', '--name', 'Bob', '--age', '3'])
我希望这将是由于mutually_exclusive
组的缘故。注意,这是一段实际代码,我有几个argument_groups
需要处理,但是在这个argument_group('people_list')
中,我希望用户指定一个配置文件或任何其他参数。在
所以,我的用户应该可以说
^{pr2}$或者
^{3}$但不是
prog --config-file cfg_file --name Bob --age 3
我做错什么了?在
以下是帮助:
像
people
这样的参数组控制帮助行的显示方式。因此,标题为people_list
的部分。在互斥组控制如何格式化用法,并检查参数的共存性。从技术上讲,它是参数组的一个子类,但这两种类型的组没有太多的交互作用。在
您可以在参数组中嵌套一个互斥组,就像您在这里所做的那样。但不能将参数组嵌套到另一个组(任何一种)。或者更确切地说,它会接受这样一个定义,但它没有什么特别之处。因此}已添加到解析器中(如用法所示),但没有添加到}。如果您将一个互斥组添加到另一个MXGroup,其效果就是创建一个大的平面组。在
name
和{meg
或{所以,除了一个小的例外,不要试图将一个组嵌套在另一个组中。他们的定义不够笼统,不足以做任何有用的事情。在
如果将
^{pr2}$name
和age
添加到meg
,则帮助将是:这将反对将}一起使用。但它也反对同时使用}。在
config-file
与name
或{name
和{存在一个错误问题,要求通用嵌套的相互xxx组。一旦实现,它就可以处理这种广义逻辑。但是现在不行,假设你可以设置你想要的测试,理想的使用线是什么样子?设置测试相对容易,但要产生有意义的使用却困难得多。在
现在我建议你自己写
usage
。使用argument groups
将参数帮助行分组。在解析之后做你自己的交互测试。您可以使用p.error...
生成错误消息。如果你明智地选择了默认值,就不难检验这些论点相关问题 更多 >
编程相关推荐