我有以下代码段。
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,属性])?
答案 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")
dest
在args
中指定属性名称,例如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字符串。