Дублировать раздел при добавлении новой опции configparser

Когда я добавляю новую опцию в раздел и записываю файл в конфигурацию, он всегда дублирует раздел и добавляет новый с новой опцией.

В идеале я хотел бы избежать этого и иметь только один раздел, как мне этого добиться?

Пример вхождения

config.add_section("Install")
config.set("Install", "apt_installer", "True")
cfile = open("file.cfg", "w")
config.write(cfile)
cfile.close()

config.read("file.cfg")
config.set("Install", "deb_installer", "True")
cfile = open("file.cfg", "a")
config.write(cfile)
cfile.close()

Когда вы открываете file.cfg, он дважды устанавливает: один с помощью apt_installer, а другой с помощью apt_installer и deb_installer. Любой совет, который кто-нибудь может дать, я был бы признателен.


person chomes    schedule 11.09.2018    source источник


Ответы (1)


Я думаю, проблема в том, что вы открываете свой файл в режиме append. Попробуйте изменить строку:

cfile = open("file.cfg", "a")

с

cfile = open("file.cfg", "w")

Также вы должны добавить следующие строки:

import configparser

config = configparser.ConfigParser()

вверху, чтобы ваш пример работал. Итак, в конце ваш пример должен выглядеть так:

import configparser

config = configparser.ConfigParser()
config.add_section("Install")
config.set("Install", "apt_installer", "True")
cfile = open("file.cfg", "w")
config.write(cfile)
cfile.close()

r = config.read("file.cfg")

config.set("Install", "deb_installer", "True")
cfile = open("file.cfg", "w")
config.write(cfile)
cfile.close()
person toti08    schedule 11.09.2018
comment
Привет, Toti08 Да, это была проблема после небольшого тестирования. Я думал про себя, почему append дублирует его, но я начал понимать логику configparser в том смысле, что он читал предыдущую информацию о конфигурации, а затем переписывал ее снова, чтобы она не потерялась. Спасибо за это. - person chomes; 11.09.2018