栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

argparse(python)是否支持互斥的参数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

argparse(python)是否支持互斥的参数组?

编辑
:没关系。因为

argparse
调用时必须创建一个选项,这是一个可怕的选择
group.add_argument
。那不是我的设计选择。如果您迫切需要此功能,可以尝试使用ConflictsOptionParser来实现:

# exclusivegroups.pyimport conflictsparseparser = conflictsparse.ConflictsOptionParser()a_opt = parser.add_option('-a')b_opt = parser.add_option('-b')c_opt = parser.add_option('-c')d_opt = parser.add_option('-d')import itertoolscompatible_opts1 = (a_opt, b_opt)compatible_opts2 = (c_opt, d_opt)exclusives = itertools.product(compatible_opts1, compatible_opts2)for exclusive_grp in exclusives:    parser.register_conflict(exclusive_grp)opts, args = parser.parse_args()print "opts: ", optsprint "args: ", args

因此,当我们调用它时,我们可以看到我们获得了预期的效果。

$ python exclusivegroups.py -a 1 -b 2opts:  {'a': '1', 'c': None, 'b': '2', 'd': None}args:  []$ python exclusivegroups.py -c 3 -d 2opts:  {'a': None, 'c': '3', 'b': None, 'd': '2'}args:  []$ python exclusivegroups.py -a 1 -b 2 -c 3Usage: exclusivegroups.py [options]exclusivegroups.py: error: -b, -c are incompatible options.

警告消息不会告知您两者,

'-a'
并且与
'-b'
不兼容
'-c'
,但是可以制作更合适的错误消息。以下是较旧的错误答案。

较旧的编辑:
_[此编辑是错误的,尽管如果以

argparse
这种方式进行工作,这不是一个完美的世界吗?]_我以前的回答实际上是不正确的,您应该可以通过为
argparse
每个互斥选项指定一个组来做到这一点。我们甚至可以
itertools
用来概括该过程。并确保我们不必显式地键入所有组合:

import itertoolscompatible_opts1 = ('-a', '-b')compatible_opts2 = ('-c', '-d')exclusives = itertools.product(compatible_opts1, compatible_opts2)for exclusive_grp in exclusives:    group = parser.add_mutually_exclusive_group()    group.add_argument(exclusive_grp[0])    group.add_argument(exclusive_grp[1])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号