mirror of
https://github.com/python/cpython.git
synced 2025-08-25 03:04:55 +00:00
Give ConfigParser the capability to set as well as read options, and to write
a representation of the configuration state in .ini format that can be read back in by a future read() call. Thus this class is now a back end for .ini editors as well as parsers. This patch is complete and tested, but exposes a bug in the ConfigParser implementation which I have not yet fixed. Because case information is discarded during parsing, the output of write() has its case smashed. I wrote this for a SourceForge interface script called forgetool. Documentation for the new entry points included.
This commit is contained in:
parent
3e3175b5e7
commit
417c489def
2 changed files with 53 additions and 0 deletions
|
@ -286,6 +286,42 @@ class ConfigParser:
|
|||
def optionxform(self, optionstr):
|
||||
return string.lower(optionstr)
|
||||
|
||||
def has_option(self, section, option):
|
||||
"""Check for the existence of a given option in a given section."""
|
||||
if not section or section == "DEFAULT":
|
||||
return self.__defaults.has_key(option)
|
||||
elif not self.has_section(section):
|
||||
return 0
|
||||
else:
|
||||
return self.__sections[section].has_key(option)
|
||||
|
||||
def set(self, section, option, value):
|
||||
"""Set an option."""
|
||||
if not section or section == "DEFAULT":
|
||||
sectdict = self.__defaults
|
||||
else:
|
||||
try:
|
||||
sectdict = self.__sections[section]
|
||||
except KeyError:
|
||||
raise NoSectionError(section)
|
||||
sectdict[option] = value
|
||||
|
||||
def write(self, fp):
|
||||
"""Write an .ini-format representation of the configuration state."""
|
||||
if self.__defaults:
|
||||
fp.write("[DEFAULT]\n")
|
||||
for key in self.__defaults.keys():
|
||||
fp.write(key + " = " + self.__defaults[key] + "\n")
|
||||
fp.write("\n")
|
||||
for section in self.sections():
|
||||
fp.write("[" + section + "]\n")
|
||||
sectdict = self.__sections[section]
|
||||
for key in sectdict.keys():
|
||||
if key == "__name__":
|
||||
continue
|
||||
fp.write(key + " = " + str(sectdict[key]) + "\n")
|
||||
fp.write("\n")
|
||||
|
||||
#
|
||||
# Regular expressions for parsing section headers and options. Note a
|
||||
# slight semantic change from the previous version, because of the use
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue