是否有一种简单的方法来使用--toggle
和--no-toggle
使用Python的argparse标记?
现在我正在使用类似于以下内容的东西:
import argparse parser = argparse.ArgumentParser() parser.add_argument('--toggle', action='store_true', dest='toggle') parser.add_argument('--no-toggle', action='store_true', default=True, dest='notoggle') options = parser.parse_args([])
我只是手动解析long if链中的可能性,但如果有一种方法可以整理它并且状态由解析器立即存储在一个目标中,那将会很好,例如options.toggle
.这是可行的,如果可行,怎么样?
一个有点相关的答案是Python argparse切换标志但是我有兴趣使用--no-
longopts store_false
切换前缀(类似于-
前面提到的链接中概述的shortopts切换前缀).
为什么不跟你链接的帖子做同样的事情?
import argparse class NegateAction(argparse.Action): def __call__(self, parser, ns, values, option): setattr(ns, self.dest, option[2:4] != 'no') ap = argparse.ArgumentParser() ap.add_argument('--toggle', '--no-toggle', dest='toggle', action=NegateAction, nargs=0)
然后,如果标志no
位于开头,则将其设置为False:
>>> ap.parse_args(['--toggle']) Namespace(toggle=True) >>> options = ap.parse_args(['--no-toggle']) >>> options.toggle False