简体   繁体   English

argparse:有条件的add_argument

[英]argparse: Conditional add_argument

I am just new with Python and I am trying out argparse. 我刚接触Python,正在尝试argparse。 I want to add an argument if the first argument is equal to something. 如果第一个参数等于某个值,我想添加一个参数。

import argparse

class ArgsParser :
    def __init__(self):
        parser = argparse.ArgumentParser()
        parser.add_argument('command')
        args = parser.parse_args()
        if args.command == 'a' :
            parser.add_argument('-b', required=True)
            args = parser.parse_args()
            self.b = args.b

def main():
    parser = ArgsParser();
    print parser.b

if __name__ == '__main__':
    main()

When I run the script using 当我使用运行脚本时

prog.py a -b="abc" prog.py a -b =“ abc”

It gives an error 它给出了一个错误

prog.py: error: unrecognized arguments: -b=abc prog.py:错误:无法识别的参数:-b = abc

But if I run the script using 但是如果我使用运行脚本

prog.py a 程序

The result would be 结果将是

prog.py: error: argument -b is required prog.py:错误:参数-b是必需的

I think you can do this with subparsers: 我认为您可以使用次级解析器来做到这一点:

>>> import argparse
>>> parse = argparse.ArgumentParser()
>>> subparsers = parse.add_subparsers()
>>> parse_a = subparsers.add_parser('a')
>>> parse_a.add_argument('-b', required=True)
_StoreAction(option_strings=['-b'], dest='b', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parse.parse_args(['a'])
usage:  a [-h] -b B
 a: error: argument -b is required

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

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