我正在尝试使用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
。
谁能告诉我这里我做错了什么,或者我该怎么做才能摆脱它?
答案 0 :(得分:3)
您正在查看 metavar ;它是从选项字符串自动生成的,以形成占位符。它告诉用户他们需要填写一个值。
您可以使用metavar
keyword argument:
当
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