2009-08-10 14 views
41

¿Hay alguna manera de hacer que la impresión óptica de Python imprima el valor predeterminado de una opción o indicador al mostrar la ayuda con --help?¿Puede el optparse de Python mostrar el valor predeterminado de una opción?

+0

Vea este SO: http://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help –

+0

Si alguien busca lo mismo para Argparse: [Argparse: forma de incluir valores predeterminados en '--help'?] (http://stackoverflow.com/a/12151325/562769) –

Respuesta

54

Trate de usar el marcador de posición %default cadena:

# 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]") 
7

Y si es necesario el acceso mediante programación a los valores por defecto, se puede llegar a ellos a través del atributo defaults del analizador (es un dict)

7

Y si desea agregar valores predeterminados automáticamente a todas las opciones que ha especificado, puede hacer lo siguiente:

for option in parser.option_list: 
    if option.default != ("NO", "DEFAULT"): 
     option.help += (" " if option.help else "") + "[default: %default]" 
0

The co Los detalles de su pregunta ya indican que hay otra forma de analizar argumentos llamados argparse. Se ha introducido en Python 3.2. De hecho, 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 tener que manipular manualmente la cadena de ayuda.

objetos ArgumentParser permiten que el formato de ayuda para ser personalizado por especificando una clase de formato alternativo. Actualmente, hay cuatro dichas clases:

argparse.RawDescriptionHelpFormatter clase

argparse.RawTextHelpFormatter clase

argparse.ArgumentDefaultsHelpFormatter clase

argparse.MetavarTypeHelpFormatter clase

Un ejemplo de los documentos 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) 

ver argparse formatting classes

0

Añadir argparse.ArgumentDefaultsHelpFormatter a su analizador

import argparse 

    parser = argparse.ArgumentParser(
    description='Your application description', 
    formatter_class=argparse.ArgumentDefaultsHelpFormatter) 

de documentación:

ArgumentDefaultsHelpFormatter añade automáticamente la información sobre valores por defecto para cada uno de los mensajes argumento de ayuda: Blockquote

Cuestiones relacionadas