Dynamic Loading Modules
Laszlo Nagy
gandalf at shopzeus.com
Sun Jan 18 06:46:52 EST 2009
Riley Porter írta:
> Hello all,
>
> This is the first time I have posted to this group. That being said
> if I am in the wrong place for this kind of support please let me know.
>
> OK,
>
> So I am writing a log parsing program and wish to allow for the
> community to write "parsers". Basically, what I have in place now is
> a "modules" directory that contains .py files that are going to be
> used to parse specific log types.
>
> The question is, is there a way to dynamically import whatever is in
> that modules directory and make is to the import name is actually the
> file name..
> So after the modules directory is 'os.listdir' and it returns a
> listing of modules (actually just .py files) IE: ng1-fw.py,
> cisco_asa_fw.py, etc... I can just in the next line of code call:
>
> ng1-fw.Parse(long_file) #assuming the ng1-fw.py file has a Parse Function
>
> right now using imp I got it to where i can say like:
> x = imp.load_source(md5.new(code_path).hexdigest(), code_path, f)
> #assuming that I gave it the path and filename for ng1-fw.py
> I can do this:
>
> x.Parse(log_file)
>
> But what I am really after is the ability to do this:
> ng1-fw.Parse(log_file)
>
> The reason again behind this is so that there is no need to "hard
> code" parser file names.
>
> Did I make myself clear? Please let me know if I need to explain that
> better.
What you need is the imp module:
http://docs.python.org/library/imp.html
> This module provides an interface to the mechanisms used to implement
> the import <http://docs.python.org/reference/simple_stmts.html#import>
> statement. It defines the following constants and functions:
You might find that using classes instead of modules is more handy.
Regards,
Laszlo
More information about the Python-list
mailing list