Python 的参数解析器将参数名打印为大写
我正在尝试为我的Python脚本编写使用说明/帮助信息,使用的是argparse
这个库。
这是我的示例代码:
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
我不知道为什么在上面的输出中,-r
和--remote
后面会打印出REMOTE
。
有没有人能告诉我我哪里做错了,或者我该怎么做才能去掉它?
2 个回答
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
7
你看到的这个 metavar 是自动生成的,它是从选项字符串中提取出来的,用来作为一个占位符。它的作用是告诉用户在这里需要填写一个值。
你可以通过 metavar
这个关键字参数 来设置一个明确的 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