python 2.7-argparse:可选参数的参数

时间:2018-06-20 09:48:42

标签: python argparse

我有以下代码段。

website.json

它打印出以下内容:

parser = argparse.ArgumentParser()
parser.set_defaults(func=lambda x: parser.print_usage())

parser.add_argument('-o', '--overview', help="print overview",
                    action='store_true')

parser.add_argument('-a', '--add', help='add sudo item', nargs='*',
                    dest="ldap_attrs")
parser.add_argument('dn, object_class, attributes', nargs='*')

parser.add_argument('-d', '--delete', help='delete sudo item', dest='action',
                    action='store_const', const=deleteItem)
parsed_args = parser.parse_args()

我希望将位置参数作为-a参数的输入参数 (例如:-a dn,object_class,属性),如果可能的话,在帮助消息中打印位置参数而不是LDAP_ATTRS(例如:-a [dn,object_class,属性])?

1 个答案:

答案 0 :(得分:0)

定义位置时,调用为:

parser.add_argument(dest, nargs='*', help='...', ...)

也就是说,一个非关键字参数是dest,即args中属性的名称。这就是帮助显示的内容。

位置不定义可选参数。 add_argument语句是分开的。如果您未定义位置操作,请忽略此add_argument

在:

parser.add_argument('-a', '--add', help='add sudo item', nargs='*',
                dest="ldap_attrs")

destargs中指定属性名称,例如args.ldap_attrs。没有它,该属性将是args.add(第一个long标志)。用法是

[-a [ADD [ADD ...]]]

我怀疑您要使用metavar

parser.add_argument('-a', '--add', help='add sudo item', nargs='*',
                dest="ldap_attrs", metavar=('dn', 'class'))

带有'*'的它仅接受2个metavar字符串。