Re: [Python-es] ejecutar función en archivo
Chema Cortes
pych3m4 en gmail.com
Lun Ago 20 15:37:20 CEST 2007
El 20/08/07, tny <a.porrua en gmail.com> escribió:
> Quiero, en tiempo de ejecución, ejecutar una función en un archivo.
>
> Entre lo que hallé por internet y lo que se me ocurrió, tengo esta
> solución.
>
> Pero apuesto un gogool de euros a que alguién sabe una manera mejor.
No explicas el porqué no te vale el import normal y corriente. Supongo
que habrá más código que el que has puesto; aún así mírate el módulo
'imp' por si te valiera lo que hay por ahí.
> __________________________________________
> #~/miscript.py
>
> def mimetodo(texto="Hola mundo")
> return texto
>
> ___________________________________________
>
> ruta="~/"
> modulo="miscript.py"
> modulo=modulo[:-3]
> metodo="mimetodo"
> variables={"texto":"Hola supramundo"}
>
> path.append(dirname(ruta))
> exec "import %s"%(nombreModulo)
> exec "texto=%s.%s(**%s)"%(nombreModulo,metodo,variables)
> print texto
>
>
> ¿se podría hacer algo como?
>
> ruta="~/miscript.py"
> metodo="mimetodo"
> variables={"texto":"Hola supramundo"}
> jaula={}
>
> exec("%s"%(ruta,),jaula)
En realidad exec es una sentencia, y no se invoca así (Sería "exec
<expression> [in <globals>[,<locals>]]")
Para ejecutar un fichero, emplea execfile()
execfile(ruta,jaula)
Pero insisto que seguro que se puede hacer mejor con el módulo 'imp'.
En lugar de "jaula" emplea un módulo e impórtalo de donde quieras.
> texto=jaula[metodo](**variables)
> print texto
>
> ¿más ideas?
>
> Gracias.
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
>
Más información sobre la lista de distribución Python-es