Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: lokitorz en Junio 22, 2013, 10:36:40 AM

Título: [SOLUCIONADO] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 10:36:40 AM
Buenas,
Estoy desarrollando un script al cual se le pasan argumentos desde consola y me surge un problema al pasarle varios argumentos para una misma opción.
Por ejemplo:
python prueba.py -v 10  --> el 10 si se recogerlo el problema viene cuando..
python prueba.py -v 10, 13 --> ¿como recojo ese 13?

con sys.argv no me vale puesto que no se en que posición va a estar es decir, algunas veces puede estar en otra posición o no estar. ejemplo
python prueba.py -f -w -v 10, 13
python prueba.py -w

Hasta ahora lo estaba haciendo con opts, args = getopt.getopt() pero solo me funciona si le paso uno solo no una cadena.

¿Alguien sabe como hacerlo?

Muchas gracias de antemano.
 
Título: Re:[Python] Argumentos múltiples
Publicado por: Expermicid en Junio 22, 2013, 10:50:15 AM
puedes iterar sobre sys.argv y luego validar los parametros tomados. Con la iteracion obtendrias todos los parametros y luego la validacion si o si va a ser necesario por lo que dices que un parametro puede como no estar.
Título: Re:[Python] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 11:03:30 AM
Eso lo estoy haciendo con
for opt, arg in opts: 
       if opt in ("-p", "--port"):
            port = arg


pero solo almacena el primero que le paso, es decir
python prueba.py -v 10, 13 --> solo me almacena el 10
Título: Re:[Python] Argumentos múltiples
Publicado por: Expermicid en Junio 22, 2013, 11:41:00 AM
Código (python) [Seleccionar]
import sys

for elements in sys.argv :
print elements


Y asi?
Título: Re:[Python] Argumentos múltiples
Publicado por: WhiZ en Junio 22, 2013, 11:48:43 AM
Podrías probar con el módulo parser. Está muy bueno para manejar los argumentos.

Saludos!
WhiZ
Título: Re:[Python] Argumentos múltiples
Publicado por: Snifer en Junio 22, 2013, 11:52:52 AM
Quieres hacerlo fijo  ?

Para ahcer uso de getopt  tiene que ser asi

Código (python) [Seleccionar]
opts, args = getopt.getopt(argv, "param1:", "h", "J", "param2"])
Título: Re:[Python] Argumentos múltiples
Publicado por: TeNeX en Junio 22, 2013, 12:30:43 PM
Hay un modulo llamado argparse ese creo que es la evolucion del getopt yo lo utilizé pero no supe implementarlo bien, es decir: me funcionó pero despues quize meterle mas opciones y ta no pude :p
Título: Re:[Python] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 12:32:00 PM
Para ahcer uso de getopt  tiene que ser asi

Código (python) [Seleccionar]
opts, args = getopt.getopt(argv, "param1:", "h", "J", "param2"])
[/quote]

Yo el código que tengo es

opts, args = getopt.getopt(sys.argv[1:], "hwp:", ["help","port="])
for opt, arg in opts:
        if opt in ("-h", "--help"): prueba.use()
        if opt in ("-p", "--port"):
            port = arg


eso con python prueba.py -v 10, 13 --> coge sin problema el 10 pero el 13 no

El módulo parser no lo he probado, buscaré su uso.

Supongo que se podria hacer con el
for elements in sys.argv :
        print elements


y comprobar si hay una ","

Muchas gracias.

Un saludo


           
Título: Re:[Python] Argumentos múltiples
Publicado por: Snifer en Junio 22, 2013, 01:02:29 PM
 ;D ese tu code no es tuyo :P lo sacaste de un blog en este momento no me acuerdo donde va  asi que mejor revisa nuevamente ..

Regards,
Snifer
Título: Re:[Python] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 01:31:34 PM
¿Como que no es mio? es el uso básico de getopt (al menos siempre lo usé así)

Saludos.
Título: Re:[Python] Argumentos múltiples
Publicado por: Snifer en Junio 22, 2013, 01:52:42 PM
Trololllolololo me equivoque al responder de post :P xDDDD acabo de hacer  la prueba respectiva y me da perfectamente :S ..

Version de Python?
Título: Re:[Python] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 01:56:46 PM
xDD . Version 2.7

¿Te ha funcionado bien? ¿Como lo has hecho?

Gracias, un saludo.
Título: Re:[Python] Argumentos múltiples
Publicado por: Snifer en Junio 22, 2013, 02:20:59 PM
Mira lee un poco de esto lo cual te servira si aun asi no puedes te digo  como va la cosa:

Getopt (http://docs.python.org/2/library/getopt.html)
Python Examples (http://archive.stsci.edu/vo/python_examples.html)

Regards,
Snifer
Título: Re:[Python] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 02:29:31 PM
Muchas gracias, voy a mirarlo y te comento.

Un saludo!
Título: Re:[Python] Argumentos múltiples
Publicado por: lokitorz en Junio 22, 2013, 02:44:26 PM
llámame torpe si quieres pero sigo sin conseguirlo  :(
el argparse no comprendo su uso y con el getopt solo consigo recoger el primero.

Un saludo.