以 – 或 – 开头的参数通常被认为是可选的。所有其他参数是位置参数,并且如设计所需(如位置函数参数)。可能需要可选的参数,但这是有点反对他们的设计。因为它们仍然是非位置参数的一部分,它们仍将被列在混乱标题“可选参数”下,即使它们是必需的。然而,使用部分中缺少的方括号表明它们确实是必需的。
In general, the argparse module assumes that flags like -f and –bar indicate optional arguments, which can always be omitted at the command line.
Note: Required options are generally considered bad form because users expect options to be optional, and thus they should be avoided when possible.
话虽如此,帮助中的头部“位置参数”和“可选参数”由两个参数组生成,其中参数自动分为。现在,你可以“入侵”并改变可选的名称,但一个更优雅的解决方案是为“需要命名的参数”(或任何你想要的名称)创建另一个组:
parser = argparse.ArgumentParser(description='Foo')
parser.add_argument('-o', '--output', help='Output file name', default='stdout')
requiredNamed = parser.add_argument_group('required named arguments')
requiredNamed.add_argument('-i', '--input', help='Input file name', required=True)
parser.parse_args(['-h'])
usage: [-h] [-o OUTPUT] -i INPUT
Foo
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
Output file name
required named arguments:
-i INPUT, --input INPUT
Input file name