Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/03/2012, 22:46
Avatar de razpeitia
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".