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.
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.
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
import sys
for elements in sys.argv :
print elements
Y asi?
Podrías probar con el módulo parser. Está muy bueno para manejar los argumentos.
Saludos!
WhiZ
Quieres hacerlo fijo ?
Para ahcer uso de getopt tiene que ser asi
opts, args = getopt.getopt(argv, "param1:", "h", "J", "param2"])
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
Para ahcer uso de getopt tiene que ser asi
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
;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
¿Como que no es mio? es el uso básico de getopt (al menos siempre lo usé así)
Saludos.
Trololllolololo me equivoque al responder de post :P xDDDD acabo de hacer la prueba respectiva y me da perfectamente :S ..
Version de Python?
xDD . Version 2.7
¿Te ha funcionado bien? ¿Como lo has hecho?
Gracias, un saludo.
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
Muchas gracias, voy a mirarlo y te comento.
Un saludo!
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.