ConfigParser enhancements to edit existing configs, part 2
This commit is contained in:
parent
23adc9f37b
commit
649685ad9b
@ -36,6 +36,9 @@ ConfigParser -- responsible for for parsing a list of
|
|||||||
has_section(section)
|
has_section(section)
|
||||||
return whether the given section exists
|
return whether the given section exists
|
||||||
|
|
||||||
|
has_option(section, option)
|
||||||
|
return whether the given option exists in the given section
|
||||||
|
|
||||||
options(section)
|
options(section)
|
||||||
return list of configuration options for the named section
|
return list of configuration options for the named section
|
||||||
|
|
||||||
@ -68,6 +71,18 @@ ConfigParser -- responsible for for parsing a list of
|
|||||||
getboolean(section, options)
|
getboolean(section, options)
|
||||||
like get(), but convert value to a boolean (currently defined as 0 or
|
like get(), but convert value to a boolean (currently defined as 0 or
|
||||||
1, only)
|
1, only)
|
||||||
|
|
||||||
|
remove_section(section)
|
||||||
|
remove the given file section and all its options
|
||||||
|
|
||||||
|
remove_option(section, option)
|
||||||
|
remove the given option from the given section
|
||||||
|
|
||||||
|
set(section, option, value)
|
||||||
|
set the given option
|
||||||
|
|
||||||
|
write(fp)
|
||||||
|
write the configuration state in .ini format
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
@ -310,18 +325,40 @@ class ConfigParser:
|
|||||||
"""Write an .ini-format representation of the configuration state."""
|
"""Write an .ini-format representation of the configuration state."""
|
||||||
if self.__defaults:
|
if self.__defaults:
|
||||||
fp.write("[DEFAULT]\n")
|
fp.write("[DEFAULT]\n")
|
||||||
for key in self.__defaults.keys():
|
for (key, value) in self.__defaults.items():
|
||||||
fp.write(key + " = " + self.__defaults[key] + "\n")
|
fp.write("%s = %s\n" % (key, value))
|
||||||
fp.write("\n")
|
fp.write("\n")
|
||||||
for section in self.sections():
|
for section in self.sections():
|
||||||
fp.write("[" + section + "]\n")
|
fp.write("[" + section + "]\n")
|
||||||
sectdict = self.__sections[section]
|
sectdict = self.__sections[section]
|
||||||
for key in sectdict.keys():
|
for (key, value) in sectdict.items():
|
||||||
if key == "__name__":
|
if key == "__name__":
|
||||||
continue
|
continue
|
||||||
fp.write(key + " = " + str(sectdict[key]) + "\n")
|
fp.write("%s = %s\n" % (key, value))
|
||||||
fp.write("\n")
|
fp.write("\n")
|
||||||
|
|
||||||
|
def remove_option(section, option):
|
||||||
|
"""Remove an option."""
|
||||||
|
if not section or section == "DEFAULT":
|
||||||
|
sectdict = self.__defaults
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
sectdict = self.__sections[section]
|
||||||
|
except KeyError:
|
||||||
|
raise NoSectionError(section)
|
||||||
|
existed = sectdict.has_key(key)
|
||||||
|
if existed:
|
||||||
|
del sectdict[key]
|
||||||
|
return existed
|
||||||
|
|
||||||
|
def remove_section(section):
|
||||||
|
"""Remove a file section."""
|
||||||
|
if self.__sections.has_key(section):
|
||||||
|
del self.__sections[section]
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
#
|
#
|
||||||
# Regular expressions for parsing section headers and options. Note a
|
# Regular expressions for parsing section headers and options. Note a
|
||||||
# slight semantic change from the previous version, because of the use
|
# slight semantic change from the previous version, because of the use
|
||||||
@ -393,7 +430,6 @@ class ConfigParser:
|
|||||||
mo = self.OPTCRE.match(line)
|
mo = self.OPTCRE.match(line)
|
||||||
if mo:
|
if mo:
|
||||||
optname, vi, optval = mo.group('option', 'vi', 'value')
|
optname, vi, optval = mo.group('option', 'vi', 'value')
|
||||||
optname = string.lower(optname)
|
|
||||||
if vi in ('=', ':') and ';' in optval:
|
if vi in ('=', ':') and ';' in optval:
|
||||||
# ';' is a comment delimiter only if it follows
|
# ';' is a comment delimiter only if it follows
|
||||||
# a spacing character
|
# a spacing character
|
||||||
|
Loading…
x
Reference in New Issue
Block a user