Подтвердить что ты не робот

Написание комментариев к файлам с помощью ConfigParser

Как писать комментарии к заданному файлу внутри разделов?

Если у меня есть:

import ConfigParser
with open('./config.ini', 'w') as f:
    conf = ConfigParser.ConfigParser()
    conf.set('DEFAULT', 'test', 1)
    conf.write(f)

Я получу файл:

[DEFAULT]
test = 1

Но как я могу получить файл с комментариями внутри раздела [DEFAULT], например:

[DEFAULT]
; test comment
test = 1

Я знаю, что могу писать коды в файлы, делая:

import ConfigParser
with open('./config.ini', 'w') as f:
    conf = ConfigParser.ConfigParser()
    conf.set('DEFAULT', 'test', 1)
    conf.write(f)
    f.write('; test comment') # but this gets printed after the section key-value pairs

Возможно ли это с помощью ConfigParser? И я не хочу попробовать другой модуль, потому что мне нужно сохранить мою программу как "запас", насколько это возможно.

4b9b3361

Ответ 1

Вы можете использовать параметр allow_no_value, если у вас есть версия >= 2.7

Этот фрагмент:

import ConfigParser

config = ConfigParser.ConfigParser(allow_no_value=True)
config.add_section('default_settings')
config.set('default_settings', '; comment here')
config.set('default_settings', 'test', 1)
with open('config.ini', 'w') as fp:
    config.write(fp)


config = ConfigParser.ConfigParser(allow_no_value=True)
config.read('config.ini')
print config.items('default_settings')

создаст файл ini следующим образом:

[default_settings]
; comment here
test = 1

Ответ 2

Вы можете создать переменную, начинающуюся С# или; характер:

conf.set('default_settings', '; comment here', '')
conf.set('default_settings', 'test', 1)

созданный файл conf

    [default_settings]
    ; comment here = 
    test = 1

Функция ConfigParser.read не будет анализировать первое значение

config = ConfigParser.ConfigParser()
config.read('config.ini')
print config.items('default_settings')

дает

[('test','1')]