Hi, Eric S. Raymond: > Earlier today, I committed a patch to ConfigParser that adds three new > methods to the class. Here is the documentation: [...] Applying the well known dictionary API to config info can help to to avoid reinventing a new API to deal with configuration info. What I would love to see, is a class 'ConfigDict' derived from 'UserDict.UserDict', which contains the section-names as keys and section-objects as values, where section-objects are also dictionaries containing the option-names as keys. The new class 'ConfigDict' should then provide a 'read()' or 'parse()' method (or take an optional filename as constructor argument) and would also provide 'write' and/or 'save' method(s). Hypothecical examples of use: rcfilename = os.path.join(os.environ.get("HOME", "."), ".myFoorc") cnf = ConfigParser.ConfigDict(rcfilename) # or alternatively: cnf = ConfigParser.ConfigDict() cnf.read(open(rcfilename, "r")) # ... accessing the configuration if cnf.has_key("FONT_SETTINGS"): try: size = int(cnf["FONT_SETTINGS"]["size"]) except KeyError: size = 10 # ... adding a section: cnf["new_section"] = {} # ... adding an option to the default section: cnf["screensize"] = "%dx%d" % (width, height) # ... cnf["FONT_SETTINGS"]["size"] = 10 # removing an option: del cnf["FONT_SETTINGS"]["fontname"] # removing a section or an option from the default section: del cnf["old_section"] del cnf["foo_bar"] # ... cnf.save() # only if instantiated using a filename argument # or alternatively: cnf.write(open(".myrc", "w")) [...] > To do these things, forgetool needs to maintain some local state that is > conveniently represented in the format of a Windows .ini file. More, > it needs to be able to *update* .ini files as well as parse them. This is a very common need. I agree, that this functionality should be provided by the standard library. Recently we had some discussion about a 'userpref' module, which should fill another related gap: provide a portable way to determine the rcfilename. a dot-rc file is the unix way to store this kind of information, on Windows a application specific ini file probaly belongs into another local directory (there is no $HOME) and on the Mac it probably belongs into a preferences folder ... still a lot of work to do. :-( Regards, Peter
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4