python的参数解析器以大写形式打印参数名称

时间:2014-10-29 09:33:24

标签: python argparse

我正在尝试使用argparse库为我的python脚本编写用法/帮助。

这是我的示例代码:

import argparse
parser = argparse.ArgumentParser(
        description='My description')

parser.add_argument(
        "-r", "--remote", 
        help="help message")

parser.print_help()

输出:

usage: [-h] [-r REMOTE]

My description

optional arguments:
  -h, --help            show this help message and exit
  -r REMOTE, --remote REMOTE
                        help message

我不知道为什么在上面输出中的REMOTE-r开关之后打印--remote

谁能告诉我这里我做错了什么,或者我该怎么做才能摆脱它?

2 个答案:

答案 0 :(得分:3)

您正在查看 metavar ;它是从选项字符串自动生成的,以形成占位符。它告诉用户他们需要填写一个值。

您可以使用metavar keyword argument

设置显式的metavar值
  

ArgumentParser生成帮助消息时,需要某种方式来引用每个预期的参数。默认情况下,ArgumentParser个对象使用dest值作为每个对象的“名称”。默认情况下,对于位置参数操作,直接使用dest值,对于可选参数操作,dest值是大写的。

你看到了,因为你的论证取了一个值;如果您希望它是一个切换,请使用action='store_true';在这种情况下,除非用户指定开关,否则选项默认为False

后者的演示:

>>> import argparse
>>> parser = argparse.ArgumentParser(
...         description='My description')
>>> parser.add_argument("-r", "--remote", action='store_true', help="help message")
_StoreTrueAction(option_strings=['-r', '--remote'], dest='remote', nargs=0, const=True, default=False, type=None, choices=None, help='help message', metavar=None)
>>> parser.print_help()
usage: [-h] [-r]

My description

optional arguments:
  -h, --help    show this help message and exit
  -r, --remote  help message
>>> opts = parser.parse_args([])
>>> opts.remote
False
>>> opts = parser.parse_args(['-r'])
>>> opts.remote
True

答案 1 :(得分:0)

您遗失action

import argparse
parser = argparse.ArgumentParser(
        description='My description')

parser.add_argument(
        "-r", "--remote", action="store_true", # add action
        help="help message")

parser.print_help()
usage: -c [-h] [-r]

My description

optional arguments:
  -h, --help    show this help message and exit
  -r, --remote  help message