#python #config
#python #конфигурация
Вопрос:
У меня есть программа, которая использует файл конфигурации из локального каталога пользователей. Если в локальном файле конфигурации отсутствует какой-либо раздел или имя, я хочу обновить локальный файл конфигурации из файла конфигурации проекта. Следует добавить только отсутствующий раздел или значение имени, если существует существующее значение имени, его не следует изменять.
Локальный файл:
[PowerPoint]
template = ppt Template.pptx
title info = User
Image directory = C:/Users/Someone/Desktop/here/
[Ecal]
CalculateEField = False
CalculateEcfromI = False
OutputPVonly = False
Файл проекта
[PowerPoint]
template = ppt Template.pptx
Title = Copy this
lot = Copy this too
title info = User2
Image directory = C:/Users/Someone_else/HomePC/nothere/
[Ecal]
CalculateEField = False
CalculateEcfromI = False
OutputPVonly = False
[New Section]
do nothing = okay
Результат после копирования: локальный файл
[PowerPoint]
template = ppt Template.pptx
Title = Copy this
lot = Copy this too
title info = User
Image directory = C:/Users/Someone/Desktop/here/
[Ecal]
CalculateEField = False
CalculateEcfromI = False
OutputPVonly = False
[New Section]
do nothing = okay
Обратите внимание, что существующее значение в локальном файле не изменяется. Любая дополнительная пара имя-значение должна быть добавлена в том же разделе, что и в файле конфигурации проекта.
Я пытался использовать анализатор конфигурации на python, но пока безуспешно. Я очень признателен, если кто-нибудь может указать мне правильное направление.
Комментарии:
1. просто прочитайте оба файла и позвольте одному файлу переопределить значения из другого файла
2. Можете ли вы показать код, который вы написали до сих пор?
Ответ №1:
ConfigParser выдаст вам результаты, указанные выше. Порядок чтения файлов имеет значение, существующие значения будут заменены на те, которые будут прочитаны позже.
import configparser
cf = configparser.ConfigParser()
# Values from 'local' overwrite those from 'project'
cf.read(['project.ini', 'local.ini'])
# Write combined config to file.
with open('result.ini', 'w') as f:
cf.write(f)