parser - ¿Puede optparse de Python mostrar el valor predeterminado de una opción?
python args parser (5)
Agregue argparse.ArgumentDefaultsHelpFormatter a su analizador
import argparse
parser = argparse.ArgumentParser(
description=''Your application description'',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
de la documentación:
ArgumentDefaultsHelpFormatter agrega automáticamente información sobre los valores predeterminados a cada uno de los mensajes de ayuda de argumentos: Blockquote
¿Hay alguna manera de hacer que la opción de impresión automática de Python sea el valor predeterminado de una opción o marca al mostrar la ayuda con --help?
Los comentarios a su pregunta ya indican que hay otra forma de analizar los argumentos llamados argparse . Se ha introducido en Python 3.2. En realidad, desaprueba optparse
pero se usa de manera similar.
argpass
viene con diferentes clases de formato y, por ejemplo, argparse.ArgumentDefaultsHelpFormatter
también imprimirá los valores predeterminados sin que tenga que manipular la cadena de ayuda manualmente.
Los objetos ArgumentParser permiten personalizar el formato de ayuda al especificar una clase de formato alternativo. Actualmente, hay cuatro clases de este tipo:
clase argparse.RawDescriptionHelpFormatter
clase argparse.RawTextHelpFormatter
clase argparse.ArgumentDefaultsHelpFormatter
clase argparse.MetavarTypeHelpFormatter
Un ejemplo de la documentación de python:
>>> parser = argparse.ArgumentParser(
... prog=''PROG'',
... formatter_class=argparse.ArgumentDefaultsHelpFormatter)
>>> parser.add_argument(''--foo'', type=int, default=42, help=''FOO!'')
>>> parser.add_argument(''bar'', nargs=''*'', default=[1, 2, 3], help=''BAR!'')
>>> parser.print_help()
usage: PROG [-h] [--foo FOO] [bar [bar ...]]
positional arguments:
bar BAR! (default: [1, 2, 3])
optional arguments:
-h, --help show this help message and exit
--foo FOO FOO! (default: 42)
Y si desea agregar valores predeterminados automáticamente a todas las opciones que haya especificado, puede hacer lo siguiente:
for option in parser.option_list:
if option.default != ("NO", "DEFAULT"):
option.help += (" " if option.help else "") + "[default: %default]"
Y si necesita acceso programático a los valores predeterminados, puede acceder a ellos a través del atributo defaults
del analizador (es un dictado)
Intente utilizar el marcador de posición de cadena %default
:
# This example taken from http://docs.python.org/library/optparse.html#generating-help
parser.add_option("-m", "--mode",
default="intermediate",
help="interaction mode: novice, intermediate, "
"or expert [default: %default]")