ConfigParser Python 2.7. Разделитель меняется на '=' после записи конфигурации - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть файл, похожий на ниже

[SectionOne]
Status: Single
Name: Derek
Value: Yes
Age: 30
Single: True

После того, как я прочитал и изменил поле, разделитель меняется на '=' вместо ':', как показано ниже

[SectionOne]
Status = Married
Name = Derek
Value = Yes
Age = 30
Single = True

Я использую Python 2.7 и не могу перейти на новую версию Python.

код ниже

Config = ConfigParser.ConfigParser()
Config.read("Bacpypes.ini")
cfgfile = open("Bacpypes.ini")
Config.set('SectionOne', 'Status', 'Married')
Config.write(cfgfile
cfgfile.close()

Заранее спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Попробуйте создать подкласс ConfigParser, чтобы изменить его поведение, чтобы оно записывало : вместо =:

class MyConfigParser(ConfigParser.ConfigParser):

    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__":
                    continue
                if (value is not None) or (self._optcre == self.OPTCRE):
                    key = ": ".join((key, str(value).replace('\n', '\n\t')))
                fp.write("%s\n" % (key))
            fp.write("\n")

Затем используйте MyConfigParser:

config = MyConfigParser()
config.read("Bacpypes.ini")
...

В дополнение к этому в вашем коде есть две ошибки:

  • Вы не открыли файл для записи.

  • У вас несбалансированные скобки.

Оба должны препятствовать выполнению кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...