Foros del Web » Programando para Internet » Python »

Pasaje por parametros al main

Estas en el tema de Pasaje por parametros al main en el foro de Python en Foros del Web. Buenas estoy investigando como puedo hacer para realizar un pasaje de parametros a un main, lo que quiero hacer es cuando llame al main de ...
  #1 (permalink)  
Antiguo 17/03/2012, 21:06
 
Fecha de Ingreso: agosto-2010
Ubicación: Montevideo
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 0
Pasaje por parametros al main

Buenas estoy investigando como puedo hacer para realizar un pasaje de parametros a un main, lo que quiero hacer es cuando llame al main de otro proyecto, pasarle unos datos, por eje tengo un proyecto que llama a otro como muestro a continuación:

Código:
ruta = os.path.join ("ruta en el disco", "main.py")
rutaAbsoluta = Utils.obtenerRuta(Utils, ruta)
subprocess.Popen([sys.executable, rutaAbsoluta])
Y por ejemplo en el main.py comienza asi:

Código:
if __name__ == '__main__':
Lo que quiero hacer es pasarle unos parametros.
Como se puede lograr lo que quiero?

Saludos
Diego
  #2 (permalink)  
Antiguo 17/03/2012, 22:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Pasaje por parametros al main

Bueno tienes varias opciones, no se exactamente que es lo quieras hacer, pero te ayudare con lo básico.

Cuando ejecutas un script en python puedes pasarle parámetros, tal como lo hacen algunos programas en linux. Por ejemplo: ls --all donde ls es el programa a ejecutar y --all es el parámetro que recibe ls.

Bueno lo mismo puedes hacer en python, usando la variable argv que se encuentra en el modulo sys. Ejemplo de uso en python.

Código Python:
Ver original
  1. #Archivo: A.py
  2. import sys
  3. print sys.argv

Entonces si lo ejecutas en la consola, puedes ver que obtienes los parámetros que enviaste. Ejemplo de ejecución.

Código:
$ python A.py 
['A.py']
$ python A.py parametro1
['A.py', 'parametro1']
$ python A.py parametro1 parametro2
['A.py', 'parametro1', 'parametro2']
Si los parámetros son pocos puedes usar esta opción y no habrá ningún problema.

Si los parámetros o datos son muchos entonces otra opción completamente diferente es leer los datos por el stdin.

Código
Código Python:
Ver original
  1. #Archivo: A.py
  2. print 1
  3. print 3
  4. print 6
  5. print 5
  6. print 2
  7. print 0
  8. print 10
  9. print -1
  10. print 16
  11. print 30
  12. print -20
Supón que nuestro archivo A.py genera una salida, en este caso números que no están orden. Y lo vamos a pasar a otro programa en python que los ordene y los imprima.

Código Python:
Ver original
  1. #Archivo: B.py
  2. l = []
  3. while True:
  4.   try:
  5.     n = int(raw_input())
  6.   except EOFError:
  7.     break
  8.   l.append(n)
  9. l.sort()
  10. print ' '.join(str(i) for i in l)
Podemos leer desde el stdin, con la función raw_input().

Para ejecutarlo solo necesitas hacer lo siguiente.
Código:
$ python A.py | python B.py 
-20 -1 0 1 2 3 5 6 10 16 30
Otras alternativas puede ser se realización de objetos, si la comunicación es por red. Incluso puedes trabajar con una base datos. O si sabes muy bien lo que estas haciendo puedes usar el "observer pattern".

Etiquetas: main, parametros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:25.