argparse:没有存储值的参数的无关参数?

时间:2017-01-06 04:14:23

标签: python argparse

Python中的argparse有点问题......

import argparse

parser = argparse.ArgumentParser()
parser.add_argument ("-o", "--optional", help="this is an optional argument")
args = parser.parse_args()

print ( args.optional )

调用test.py -h将输出...

usage: test.py [-h] [-o OPTIONAL]

optional arguments:
  -h, --help            show this help message and exit
  -o OPTIONAL, --optional OPTIONAL
                        this is an optional argument

有什么方法可以摆脱帮助菜单中的额外OPTIONAL?我知道我可以使用parser.add_argument ("-o", "--optional", help="this is an optional argument", action=store_true)执行此操作,但我不能这样做,因为我稍后需要调用args.optional

同样,这不仅仅是程序的功能与美学有关,因为test.py -o hello会打印hello

2 个答案:

答案 0 :(得分:0)

通常一个没有参数的选项有一个动作,它会抑制那个metavar:

parser.add_argument ("-o", "--optional", action='store_true')

否则,你可以修改这样的论点:

parser.add_argument ("-o", "--optional", metavar='', help="the help text")

答案 1 :(得分:0)

首先是解析这个参数或帮助中的显示?

<button id="btn">Press Me</button>
<div id="elem"></div>

具有默认的parser.add_argument ("-o", "--optional", help="this is an optional argument") 操作,因此需要一个参数。如用法中所示:

store_true

其中&#39;可选&#39;是usage: test.py [-h] [-o OPTIONAL] -o后包含的字符串的替代品。 --optional将具有该字符串的值。

args.optional将此参数转换为布尔值,如果未给出则为False,如果提供action='store_true则为True。它没有任何附加价值。

-o

是帮助中显示此类操作的正常方式。同样-o OPTIONAL, --optional OPTIONAL OPTIONAL-o后面的字符串的地点标记。 --optional参数可用于自定义该地点标记。它可以和&#34;&#34;

一样短

有些人不喜欢这种重复的模式,更喜欢像

这样的东西
metavar

以前的问题已经讨论过了。它需要更改-o , --optional OPTIONAL 类(即子类)。

python argparse help message, disable metavar for short options?

另一件事是简化定义

HelpFormatter