Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kasswed en 18 Agosto 2009, 21:20 pm



Título: [Python] optparse
Publicado por: Kasswed en 18 Agosto 2009, 21:20 pm
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:

Código:
./script.py -o output.log

Salte un mensaje diciendo algo como:

Código:
[ERROR] 'database' is required.

¿Alguien sabe cómo se haría?


Título: Re: [Python] optparse
Publicado por: 08l00D en 18 Agosto 2009, 21:41 pm
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


Título: Re: [Python] optparse
Publicado por: 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.


Título: Re: [Python] optparse
Publicado por: Novlucker en 18 Agosto 2009, 23:30 pm
Veamos si esto te sirve  ;)

:http://www.alexonlinux.com/pythons-optparse-for-human-beings#support_for_mandatory_%28required%29_options.

Saludos


Título: Re: [Python] optparse
Publicado por: Kasswed en 19 Agosto 2009, 00:41 am
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!!!