Python argparse --toggle --no-toggle 标志

shangdawei 阅读:24 2024-08-05 10:48:10 评论:0

有没有直接的使用方法--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([]) 

我只是手动解析一个长 if 链中的可能性,但是如果有一种方法可以整理它并让解析器立即将状态存储在一个目的地,例如 options.toggle .这是否可行,如果可行,如何?

一个有点相关的答案是 Python argparse toggle flags但是我有兴趣使用 --no-作为长期选择 store_false切换前缀(类似于上述链接中概述的 - 短选项切换前缀)。

请您参考如下方法:

为什么不和你链接的帖子一样??

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 


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号