Lo que necesito hacer es recorrer una gran cantidad de archivos diferentes y (intentar) recuperar los metadatos de los archivos.Ejecutar una función por nombre de variable en Python
Puedo hacer un gran if ... elif ... y probar cada extensión, pero creo que sería mucho más fácil almacenar la extensión en una variable, verificar si existe una función con ese nombre, y ejecutar eso.
Ésta es mi solución actual, tomada desde otro hilo StackOverflow:
try:
getattr(modulename, funcname)(arg)
except AttributeError:
print 'function not found "%s" (%s)' % (funcname, arg)
Hay un problema con esto: Si la función subyacente plantea una AttributeError, esto está registrada como una "función no encontrado" de error . puedo añadir bloques try ... except a todas las funciones, pero eso no sería particularmente bastante bien ...
Lo que estoy buscando es más algo como:
if function_exists(fun):
execute_function(fun, arg)
¿Existe una forma directa de hacer esto?
Gracias :-)
me gustaría envolver 'func (arg)' 'en un Proveedores:' TypeError y la captura en caso de que el módulo tiene un atributo 'func' que no es invocable – geoffspear
@Wooble: buena sugerencia o también puede hacer: 'if func and invocable (func):' – mouad
@Carpetsmoker: me alegro de que ayude :) – mouad