For a small fetch script I wanted to be able to simply put new modules into a certain directory and let the script use it at the text start. Python offers with the import(…) function a really nice tool for something like that. Here a small example:
modules = [] for f in os.listdir("modules"): if f.startswith("mod_"): if f.endswith(".pyc"): minus = 4 else: minus = 3 module = "modules."+f[:-minus] if module in doneModules: continue doneModules.append(module) print "Importing %s"%(module) modules.append(__import__(module,globals(),locals(),["modules"]))
The only really interesting part is the last line in the loop. Here a new module is loaded an appended to the modules list. Since the modules are in the “modules” package the last parameter of the import call is no longer optional. Otherwise you’d only do a import modules.mod_whatever
instead of a from modules import mod_whatever
.
Another note: The first parameter has to be in this case “modules.mod_whatever” and not only “mod_whatever”. If you forget this you will get a “module not found” error.
Do you want to give me feedback about this article in private? Please send it to comments@zerokspot.com.
Alternatively, this website also supports Webmentions. If you write a post on a blog that supports this technique, I should get notified about your link π