【发布时间】:2014-01-22 07:16:12
【问题描述】:
我正在尝试学习 argparse 以便在我的程序中使用它,语法应该是这样的:
-a --aLong <String> <String>
-b --bLong <String> <String> <Integer>
-c --cLong <String>
-h --help
我有这个代码:
#!/usr/bin/env python
#coding: utf-8
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Lorem Ipsum')
parser.add_argument('-a','--aLong', help='Lorem Ipsum', required=False)
parser.add_argument('-b','--bLong', help='Lorem Ipsum', required=False)
parser.add_argument('-c','--cLong', help='Lorem Ipsum', required=False)
parser.add_argument('-h','--help', help='Lorem Ipsum', required=False)
parser.parse_args()
问题是,我阅读了官方文档,看过 YouTube 视频等,但我无法理解如何确定“主参数”的“子参数”的数量?
示例:myApp.py -b Foobar 9000,如何设置-b 必须有两个“子参数”,以及如何获取值,Foobar 和 9000?
还有一个疑问,我知道我可以将参数设置为required,但我想让我的程序仅在至少一个参数被传递时执行,四个参数中的任何一个提到了。
也许这是一个愚蠢的问题,但对不起,我无法理解,希望这里有“教师权力”的人来解释它。
【问题讨论】:
-
您应该能够使用 Argument Groups - docs.python.org/dev/library/argparse.html#argument-groups 实现您提到的内容。
-
argument-groups无济于事。它们影响help显示,但不影响解析。像 FMc 那样在解析后进行测试是确保给出 3 个参数之一的方法。可以使用互斥组来防止使用超过 1 个组,但 OP 想要“至少一个”。
标签: python python-3.x argparse