How to remove spaces while writing in INI file- Python

前端 未结 2 899
-上瘾入骨i
-上瘾入骨i 2021-01-19 02:36

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         


        
2条回答
  •  北荒
    北荒 (楼主)
    2021-01-19 03:05

    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:

    1. Use the INI file with whitespace around the equals
    2. Overwrite RawConfigParser's write method with your own
    3. Write the file, read the file, remove the whitespace, and write it again

    If 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")
    

提交回复
热议问题