parser example argumentparser arg_parser add_argument python optparse

example - Python optparse metavar



optparse python 3 (5)

No estoy seguro de para qué se optparse el parámetro metavar . Veo que se usa por todos lados, pero no puedo ver su uso.

¿Alguien puede aclararme? Gracias.


Como dice @Guillaume, se usa para generar ayuda. Si desea tener una opción que tome un argumento, como un nombre de archivo, puede agregar el parámetro metavar a la llamada add_option para que su nombre / descriptor de argumento preferido add_option en el mensaje de ayuda. De la documentación del módulo actual :

usage = "usage: %prog [options] arg1 arg2" parser = OptionParser(usage=usage) parser.add_option("-f", "--filename", metavar="FILE", help="write output to FILE"),

produciría ayuda como esta:

usage: <yourscript> [options] arg1 arg2 options: -f FILE, --filename=FILE

El "ARCHIVO" después de "-f" y el "nombre de archivo" proviene del metavar.



metavar es una variable utilizada para imprimir en la pantalla después de la opción. Por lo general, se utiliza para la entrada de sugerencia después de la opción FILE o INT o STRING para el usuario. Sin metavar , optparse imprimirá valor de optparse después de la opción que ha sido agregado.


Ahora es preferible usar la biblioteca argparse en lugar de optparse.

Razones por las cuales se dan aquí .


Hay otro uso significativo de metavar en el que se desea usar ''dest'' como la etiqueta de búsqueda de argumento pero enmascarar el mensaje de ayuda por metavar. (Por ejemplo, a veces útil al usar subparsers). (Como se indica en el comentario de S.Lott ).

parser.add_argument( ''my_fancy_tag'', help=''Specify destination'', metavar=''helpful_message'' )

o igualmente

parser.add_argument( dest=''my_fancy_tag'', help=''Specify destination'', metavar=''helpful_message'' )

La ayuda mostrará el metavar:

./parse.py -h usage: parser [-h] destination positional arguments: helpful_message Specify destination

pero dest guardará el fancy_tag en Namespace:

./parse.py test Namespace(my_fancy_tag=''test'')