Foros del Web » Programando para Internet » Python »

Cargar Módulos Dinamicamente.

Estas en el tema de Cargar Módulos Dinamicamente. en el foro de Python en Foros del Web. Hola. Estoy Haciendo una aplicación de gestión de Libros, La parte que tengo el problema es que he echo unos modulos que se encargan de ...
  #1 (permalink)  
Antiguo 28/06/2012, 05:14
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 9 meses
Puntos: 2
Cargar Módulos Dinamicamente.

Hola.

Estoy Haciendo una aplicación de gestión de Libros, La parte que tengo el problema es que he echo unos modulos que se encargan de rascar la información de varias paginas de internet.

La estructura seria asi:

.\aplicacion.py
.\pluguins\www_casadellibro_com.pyc
.\pluguins\www_arnoia.com_com.pyc

En el rascar la información no tengo problema, la cuestión es que los módulos independientes que rascan la información quiero que se carguen dinamicamente, ose si añado el día de mañana uno que sea www_mce_es.pyc que la aplicación lo cargue dinamicamente.

Mi idea seria que hubiera un bucle en aplicación que cargue la clase que hay en los módulos pasando le un parametro este devuelve un diccionario con la información si el primero no devuelve nada entonces se lo pide al siguiente etz....

He encontrado informacion aqui [URL="http://www.gulic.org/almacen/diveintopython-5.4-es/functional_programming/all_together.html"]http://www.gulic.org/almacen/diveintopython-5.4-es/functional_programming/all_together.html[/URL] que me serviria pero no se si hay algún metodo mejor para hacerlo

Salutaciones y Gracias
  #2 (permalink)  
Antiguo 28/06/2012, 12:05
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Cargar Módulos Dinamicamente.

Al final lo he resuelto asi :

Código Python:
Ver original
  1. path = os.path.abspath(os.path.dirname(sys.argv[0]))
  2.     path = os.path.abspath( path + '\\..\\pluguins\\')
  3.  
  4.     sys.path.append(path)
  5.  
  6.     files = os.listdir(path)
  7.     test = re.compile(".pyc$", re.IGNORECASE)
  8.     files = filter(test.search, files)
  9.  
  10.     filenameToModuleName = lambda f: os.path.splitext(f)[0]
  11.     modules = map(filenameToModuleName, files)
  12.     print modules
  13.  
  14.     for module in modules:
  15.          try:
  16.              mod = __import__(module)
  17.              if 'InfoDownload' in dir(mod):
  18.                  info = mod.InfoDownload()
  19.                  #dades = info.GetInfoISBN('9788415239123', RutaOut='..\\IMG\\')9788445077511
  20.                  dades = info.GetInfoISBN('9788445077511', RutaOut='..\\IMG\\')
  21.                  print dades
  22.          except Exception, e:
  23.              print "LOAD MODULE",e.__class__.__name__, e

Haber que os parece??

Etiquetas: Ninguno
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 07:22.