我需要做的是循环大量不同的文件并(尝试)从文件中获取元数据。在Python中通过变量名执行函数
我可以做一个大的if ... elif ...并测试每个扩展,但我认为将扩展存储在变量中会更容易,检查是否存在具有该名称的函数,并执行它。
这是我目前的解决方案,从另一个计算器线程采取:
try:
getattr(modulename, funcname)(arg)
except AttributeError:
print 'function not found "%s" (%s)' % (funcname, arg)
没有与此问题: 如果底层函数产生一个AttributeError,这个被注册为“功能未找到”错误。 我可以加试...除了块的所有功能,但不会特别漂亮要么...
我正在寻找的是更多的类似:
if function_exists(fun):
execute_function(fun, arg)
是否有直接的方式做到这一点?
感谢:-)
我包'FUNC(ARG)':
要使用这个变量里面'和catch类型错误的情况下,该模块有一个属性'func'不是调用。 – geoffspear 2011-03-22 12:37:42
@Wooble:不错的建议或者他也可以这样做:'if func and callable(func):' – mouad 2011-03-22 12:40:15
@Carpetsmoker:很高兴帮助:) – mouad 2011-03-22 12:59:02