python 2.7 - argparse:可选参数的参数
python 2.7 - argparse: parameters to optional arguments
我有以下代码片段。
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()
它打印出以下内容:
usage: sudoadm.py [-h] [-o] [-a [LDAP_ATTRS [LDAP_ATTRS ...]]] [-d]
[dn, object_class, attributes [dn, object_class, attributes ...]]
positional arguments:
dn, object_class, attributes
optional arguments:
-h, --help show this help message and exit
-o, --overview print overview
-a [LDAP_ATTRS [LDAP_ATTRS ...]], --add [LDAP_ATTRS [LDAP_ATTRS ...]]
add sudo item
-d, --delete delete sudo item
我想将位置参数作为 -a 参数的输入参数
(例如:-a dn, object_class, attributes),如果可能的话,在帮助消息中打印位置参数而不是 LDAP_ATTRS(例如:-a [dn, object_class, attributes] )?
定义positional时调用为:
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
(第一个长标志)。用法是
[-a [ADD [ADD ...]]]
我怀疑你想使用 metavar
parser.add_argument('-a', '--add', help='add sudo item', nargs='*',
dest="ldap_attrs", metavar=('dn', 'class'))
带“*”的,它只接受 2 个元变量字符串。
我有以下代码片段。
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()
它打印出以下内容:
usage: sudoadm.py [-h] [-o] [-a [LDAP_ATTRS [LDAP_ATTRS ...]]] [-d]
[dn, object_class, attributes [dn, object_class, attributes ...]]
positional arguments:
dn, object_class, attributes
optional arguments:
-h, --help show this help message and exit
-o, --overview print overview
-a [LDAP_ATTRS [LDAP_ATTRS ...]], --add [LDAP_ATTRS [LDAP_ATTRS ...]]
add sudo item
-d, --delete delete sudo item
我想将位置参数作为 -a 参数的输入参数 (例如:-a dn, object_class, attributes),如果可能的话,在帮助消息中打印位置参数而不是 LDAP_ATTRS(例如:-a [dn, object_class, attributes] )?
定义positional时调用为:
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
(第一个长标志)。用法是
[-a [ADD [ADD ...]]]
我怀疑你想使用 metavar
parser.add_argument('-a', '--add', help='add sudo item', nargs='*',
dest="ldap_attrs", metavar=('dn', 'class'))
带“*”的,它只接受 2 个元变量字符串。