call a function by knowing its name as a string
I want to call a function but its name is stored in a string. How to do that?
I wanted to create a menu where the user can select which entry to call. It looks like this:
(1)[r] radio (2)[ctd] create temp. directory -------- [m] menu [q] <
In Python I stored it like this:
menu = OrderedDict() menu[(1, 'r')] = ('radio', 'apps.radio.radio_player') menu[(2, 'ctd')] = ('create temp. directory', 'apps.temp_folder.create_temp_folder')
That is, if the user selects “
apps.radio.radio_player() must be called.
Here is the method that can call the appropriate function:
import importlib def start_app(val): """ Call a function by name (string). Tip from here: http://stackoverflow.com/questions/3061 . """ _, to_call = val function_string = to_call # ex.: 'apps.radio.radio_player' mod_name, func_name = function_string.rsplit('.', 1) mod = importlib.import_module(mod_name) func = getattr(mod, func_name) func()
The tip is from here.