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
--
http://mail.python.org/mailman/listinfo/python-list