I am using a file and i have one section named DIR in which it contain the paths. EX:
[DIR]
DirTo=D:\\Ashish\\Jab Tak hai Jaan
DirBackup = D:\\Parser\\ERICS
I ran into this problem to and I came up with an additional solution.
Instead I wrote a wrapper around the file object which simply replaces " = " with "=" in all lines written though it.
class EqualsSpaceRemover:
output_file = None
def __init__( self, new_output_file ):
self.output_file = new_output_file
def write( self, what ):
self.output_file.write( what.replace( " = ", "=", 1 ) )
config.write( EqualsSpaceRemover( cfgfile ) )
Here is the definition of RawConfigParser.write
:
def write(self, fp):
"""Write an .ini-format representation of the configuration state."""
if self._defaults:
fp.write("[%s]\n" % DEFAULTSECT)
for (key, value) in self._defaults.items():
fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t')))
fp.write("\n")
for section in self._sections:
fp.write("[%s]\n" % section)
for (key, value) in self._sections[section].items():
if key != "__name__":
fp.write("%s = %s\n" %
(key, str(value).replace('\n', '\n\t')))
fp.write("\n")
As you can see, the %s = %s\n
format is hard-coded into the function. I think your options are:
RawConfigParser
's write
method with your ownIf you're 100% sure option 1 is unavailable, here's a way to do option 3:
def remove_whitespace_from_assignments():
separator = "="
config_path = "config.ini"
lines = file(config_path).readlines()
fp = open(config_path, "w")
for line in lines:
line = line.strip()
if not line.startswith("#") and separator in line:
assignment = line.split(separator, 1)
assignment = map(str.strip, assignment)
fp.write("%s%s%s\n" % (assignment[0], separator, assignment[1]))
else:
fp.write(line + "\n")