在代码中,我需要针对一个特定的问题需要调用特定的函数进行解析
为了可扩展性,有可能会出现很多问题,所以我就把每个问题调用什么函数写在配置文件中,如下:
{
"11000": {
"check_service": {
"name": "nc_echopid.sh",
"cmd": "cd /data/ ; /bin/bash ./nc_echopid.sh",
"path": "/data/",
"analysis_func": "analysis_check_service_result"
}
}
}
函数具体的定义写在另外一个文件中
所以我从配置文件中读到的是需要调用的函数名,并赋给了变量analysis
analysis = id_script_map[issue_id][task]["analysis_func"]
但是问题来了,我需要实际调用这个函数,如果直接用analysis进行调用,只是字符串,无法进行调用
查找了一番,找到的资料只是说直接传函数,但是我这个是动态的,
最后在一个角落的回答里找到这样一个方法,利用python的globals 查找传递的字符串,并返回函数本身
转化后即可调用
代码如下:
func = globals()[analysis] # 打印出来可以看到func就是analysis函数名对应的函数,类型是function
abnormal_item, normal_item = func(exec_result) # 按照函数定义进行调用即可