[英]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.