Tracy: > Date: Sat, 15 Jul 2006 22:44:43 -0700 (PDT) > From: Danny Yoo <[EMAIL PROTECTED]> > Subject: Re: [Tutor] How do you implement a config file? > To: Tracy R Reed <[EMAIL PROTECTED]> > Cc: tutor@python.org > Message-ID: <[EMAIL PROTECTED]> > Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed > > > > > I am writing a small python application that needs a few variables to be > > end user configurable. Right now I just have the variables right up > > front where the user can tweak them in the program code and a big > > commented line that says "Nothing editable past this point." But I would > > like to be able to break this out into a separate config file. There are > > two ways I see to do this: > > Hi Tracy, > > [config parser approach cut] > > > I don't see any good way to do that either without actually making my > > config file a module and calling it config.py instead of > > application.config. > > This second approach --- using a module as a configuration file --- is the > programmer-friendly one. *grin* If you can get away with this, it's > probably the simplest to implement. It also seems to be the approach that > most Python programs use, bar more sophisticated approaches like XML or > some other structured data format. > > We had some discussion about this earlier the last few weeks (and months! > Someone should put this on the FAQ!), and the concensus seems to be that > ConfigParser is a bit limiting: > > http://aspn.activestate.com/ASPN/Mail/Message/python-Tutor/3116794 > http://mail.python.org/pipermail/tutor/2006-June/047557.html
I like to implement config data as a Python dictionary. Doing so makes things almost trivial. To use your example: In config.py >>>>>>> configdata = { "foo": ['bar','baz','bah'] . . . } >>>>>>> In application.py >>>>>>> from config import configdata . . . foo = configdata["foo"] >>>>>>> The drawback, of course, is that the application's administrator must understand enough Python to fill in a dictionary. As Danny says, if you can get away with that caveat, the dictionary approach is easy to implement. Another method is to store your config data in XML format. This is a little more complex to implement, but has a couple of advantages. First, since XML is a pretty widely accepted standard, is reasonable to expect the application's administrator to know it. Second, you can name the config file whatever you want: "application.config" works just fine (although you might want to add "XML" to the file name somewhere). Again, from your example: In appXML.config: >>>>>>> [configdata] [foo] bar baz bah [/foo] . . . [/configdata] >>>>>>> I haven't used XML for this purpose (yet), so I can't help you with the Python XML parser, but you can get more information on the WEB: http://pyxml.sourceforge.net/topics/ HTH. Regards, Barry [EMAIL PROTECTED] 541-302-1107 ________________________ We who cut mere stones must always be envisioning cathedrals. -Quarry worker's creed _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor