Español English

Wednesday 23 January 2013

Parsear opciones en Python

A pesar de que después los amigos me pincharán voy a escribir algunas cosillas que he aprendido ha hacer con python :)

Nunca ha sido demasiado de mi agrado, más que nada porque estoy acostumbrado a realizar las cosas como en C/C++ y claro la deformación profesional...

Bueno a lo que íbamos, por un trabajo que he tenido que utilizar python y quería poder dar diferentes opciones al programa. Entonces encontré el siguiente módulo: optparse

Funciona como en el siguiente ejemplo:


#!/usr/bin/python
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-s", "--start", dest="start", help="Ejemplo de opcion", metavar="Start")
parser.add_option("-f", "--finish", dest="finish", help="Otro ejemplo de opcion", metavar="Finish")
(options, args) = parser.parse_args()

if __name__ == "__main__":
    if options.start != None:
        print "Tenemos opcion en Start", options.start
    else:
        print "No hay opcion en Start"
    if options.finish != None:
        print "Tenemos opcion en Finish", options.finish
    else:
        print "No hay opcion en Finish"
    print "En argumentos tenemos", args



Podemos ver en el ejemplo que los parámetros necesarios para añadir una nueva opción son las siguientes:

add_option(opción_corta, opción_larga, atributo_destino, mensaje_de_ayuda, metavar_usado_en_la_ayuda)


Un par de ejecuciones del ejemplo son las siguientes:


[maitesin@Malesero ~]$ ./ejemplo.py -s 12 -f Hola Adios
Tenemos opcion en Start 12
Tenemos opcion en Finish Hola
En argumentos tenemos ['Adios']
[maitesin@Malesero ~]$ ./ejemplo.py -s 12 Adios
Tenemos opcion en Start 12
No hay opcion en Finish
En argumentos tenemos ['Adios']
[maitesin@Malesero ~]$ ./ejemplo.py
No hay opcion en Start
No hay opcion en Finish
En argumentos tenemos []
[maitesin@Malesero ~]$ ./ejemplo.py --help

Usage: ejemplo.py [options]

Options:
  -h, --help            show this help message and exit
  -s Start, --start=Start
                        Ejemplo de opcion
  -f Finish, --finish=Finish
                        Otro ejemplo de opcion




Espero que os sirva ésto tanto como a mi.

No comments:

Post a Comment