On May 4, 11:35 pm, sandipm <[EMAIL PROTECTED]> wrote: > Hi, > In my application, I have some configurable information which is used > by different processes. currently I have stored configration in a > conf.py file as name=value pairs, and I am importing conf.py file to > use this variable. it works well > > import conf > print conf.SomeVariable > > but if I need to change some configuration parameteres, it would need > me to restart processes. > > I want to store this data in some conf file (txt) and would like to > use it same way as I am using these variables as defined in py > files. > > one solution I can think of is writing data as a dictionary into conf > file. and then by reading data, apply eval on that data. and update > local dict? but this is not a good solution.... > > any pointers? > > Sandip
I would load the configuration file using `imp.load_source'. This allows you to load the config file by filename, and gets away from the issue of accidentally importing a file somewhere else in pythons search path. Also, calling imp.load_source will reload the module when called a second time. http://docs.python.org/lib/module-imp.html [conf.py] a = 1 b = 2 class c: a = "hello" b = "world" [/end conf.py] >>> conf = imp.load_source("conf", "./conf.py") >>> conf.a 1 >>> conf.b 2 >>> conf.c.a 'hello' >>> conf.c.b 'world' There are so many ways potential solutions to your problem that, without any more details, it is hard to suggest anything. Here are some potential solutions: ConfigParser - module for handling ini files xml - several built-in modules for handling XML files sqlite3 - a `lite' SQL database built-in in python 2.5 + (can be used for config data) windows registry - _winreg module pickle - serialize python objects marshal - similar to pickle, only works for simple objects Those are just the built-in solutions. If you wanna look at 3rd party solutions, prepare for overload. The number of alternative INI parsers alone is staggering. Also, there are many ways to organize your data and use a solution similar to what you are already using. I guess what I'm trying to say is... don't roll your own, it would be a waste of time, this problem has been solved 100s of times. That is, unless you want to do it for fun. Matt -- http://mail.python.org/mailman/listinfo/python-list