Использование двоеточий в ConfigParser Python

Согласно документации:

Файл конфигурации состоит из разделы, во главе с заголовком [section] и за ним следует имя: значения, с продолжениями в стиле RFC 822 (см. Раздел 3.1.1 "ДЛИННЫЙ ГОЛОВА" FIELDS "), а также имя = значение. Документы Python

Однако при написании файла конфигурации всегда используйте знак равенства (=). Есть ли возможность использовать знак двоеточия (:)?

Спасибо заранее.

Н

Ответы

Ответ 1

Если вы посмотрите на код, определяющий метод RawConfigParser.write внутри ConfigParser.py, вы увидите, что равные знаки жестко закодированы. Чтобы изменить поведение, вы можете подклассифицировать ConfigParser, который вы хотите использовать:

import 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__":
                    fp.write("%s : %s\n" %
                             (key, str(value).replace('\n', '\n\t')))
            fp.write("\n")

filename='/tmp/testconfig'    
with open(filename,'w') as f:
    parser=MyConfigParser()
    parser.add_section('test')
    parser.set('test','option','Spam spam spam!')
    parser.set('test','more options',"Really? I can't believe it not butter!")
    parser.write(f)

дает:

[test]
more options : Really? I can't believe it not butter!
option : Spam spam spam!