[Python] optparse

Iniciado por Kasswed, 18 Agosto 2009, 21:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Kasswed

Holas.

Me gustaría obtener un poco de ayuda, he buscado en la documentación oficial pero no he visto nada al respecto (quizá me lo haya saltado con las prisas).

No sé si sabeis qué es optparse. Es un módulo de python que permite hacer el lanzamiento del programa más ameno, al estilo de los comandos. Además te brinda ayuda y tal. En fin, un lujo.

El caso es que quiero que por ejemplo una opción X sea obligatoria ponerla, y que cuando no se ponga salte un mensaje de error personalizado, pero que Y opciones no sean obligatorias sino optativas. Así, si tú tienes un script al que le puedes pasar la opción -o fichero, y la opción -b database, la opción -b sería obligatoria y la -o optativa (según tú indiques, claro), de forma que si haces:

./script.py -o output.log

Salte un mensaje diciendo algo como:

[ERROR] 'database' is required.

¿Alguien sabe cómo se haría?
"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.

08l00D

No, optparse de por si trata todos los argumentos como opcionales no puedes poner que tal parametro sea obligatorio y tales otros no... todos son opcionales... por ahi eh visto que tocando un poco el code de una clase de ese modulo podias ponerle vos esa opcion, pero ya de por si optparse no te brinda soporte para lo que quieres.
Igualmente tenes dentro del standar a getopt que me parece que si lo podes hacer en la documentacion oficial hay documentacion acerca de el...

Saludos

Anibal784

Si, optparser puede tomar como todos los parámetros como optativos, pero seguro debe tener algún mecanismo para saber que alguna opción fue pasada, así si sería cuestión de preguntar y si no se recibió ese argumento, lanzar una excepción o mostrar el error y abortar.
El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Kasswed

Cita de: Anibal784 en 18 Agosto 2009, 23:25 PM
Si, optparser puede tomar como todos los parámetros como optativos, pero seguro debe tener algún mecanismo para saber que alguna opción fue pasada, así si sería cuestión de preguntar y si no se recibió ese argumento, lanzar una excepción o mostrar el error y abortar.

Bueno eso lo puedo hacer yo como bien dices de forma manual, poniendo un default, y si el valor es el mismo que el de default es porque la opción no se puso, pero yo decía por si optparse tenía algo ya implementado. En vista de que no supongo que habrá que hacerlo a mano, que tampoco supone tanto trabajo, pero en fin, me quedo con la puntillita de saber si optparse trae esa opción xD

Saludos!!!
"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.