繁体   English   中英

argparse-python

[英]argparse - python

在python脚本中,我想具有三个位置参数和两个可选参数(包括“帮助”)。 所以我的需求就像

正确:

./myscript.py ONE TWO THREE
./myscript.py --list

不正确:

./myscript.py ONE TWO THREE --list

我想使用argparse本身使所有位置参数和可选参数互斥。

这近似于您想要的:

class Three(argparse.Action):
    # custom action that requires 0 or 3 values
    def __call__(self,parser,namespace,values,option_string):
        if len(values) in [0,3]:
            setattr(namespace, self.dest, values)
        else:
            raise argparse.ArgumentError(self,'must have 3 values')

custom = 'usage: %(prog)s [-h] (--list | ONE TWO THREE)'
p=argparse.ArgumentParser(prog='PROG',usage=custom)
g=p.add_mutually_exclusive_group(required=True)
g.add_argument('--list',action='store_true')
g.add_argument('pos',nargs='*',default=[],action=Three)

如果同时给出了--listpos ,或者什么都没有给出,或者pos值的数量不为3,则会引发错误。我包括了一个自定义用法,因为默认值为:

usage: PROG [-h] (--list | pos [pos ...])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM