Использование двоеточий в ConfigParser Python - PullRequest
5 голосов
/ 30 октября 2010

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

Файл конфигурации состоит из разделы, во главе с заголовком [section] а затем имя: значения записей, с продолжениями в стиле RFC 822 (см. Раздел 3.1.1, «ДЛИННАЯ ЖАТКА» ПОЛЯ»); Имя = значение также принимается. Документы Python

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

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

H

1 Ответ

7 голосов
/ 30 октября 2010

Если вы посмотрите на код, определяющий метод 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's not butter!")
    parser.write(f)

выход:

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