argparse 有什么方法可以解析类似的标志[+-]a,b,c,d
?
foo.py +s -b
应该将 True 存储在dest
of s
和 False 中dest
of b
,很像 Windows 所做的attrib
或Linuxchmod
.
目前,我正在使用 2 个单独的参数+s
and -s
with store_true
and store_false
, 分别。但它创建了一个丑陋的帮助,它列出每个标志两次(+a&-a)
另一种解决方法是使用正则表达式手动解析扩展参数(这似乎更容易并使用自定义描述,but在这样做之前,我只是想看看是否有任何东西可以让我使用 argparse 本身执行相同的操作。
您可以通过传递两者来做到这一点-s
and +s
到一个单一的add_argument
调用,并使用自定义操作:
class ToggleAction(argparse.Action):
def __call__(self, parser, ns, values, option):
setattr(ns, self.dest, bool("-+".index(option[0])))
ap = ArgumentParser(prefix_chars='-+')
ap.add_argument('-s', '+s', action=ToggleAction, nargs=0)
ap.parse_args(['+s'])
Namespace(s=True)
ap.parse_args(['-s'])
Namespace(s=False)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)