Обновить поле с помощью ConfigParser -Python- - PullRequest
4 голосов
/ 15 марта 2011

Я думал, что метод set модуля ConfigParser обновляет указанное поле, но, похоже, изменение остается только в памяти и не попадает в файл конфигурации.Это нормальное поведение?

Я также попробовал метод write , но я получил еще один реплицированный раздел, который пока не тот, который мне нужен.

Вот образец, который представляет то, что я делаю:

import sys
import ConfigParser 

   if __name__=='__main__':    
   cfg=ConfigParser.ConfigParser()
   path='./../whatever.cfg/..'
   c=cfg.read(path)
   print cfg.get('fan','enabled')
   cfg.set('fan','enabled','False')       
   c=cfg.read(path)
   print cfg.get('fan','enabled')

Ответы [ 4 ]

9 голосов
/ 18 ноября 2012
  1. открыть файл конфигурации
  2. читать содержимое с помощью ConfigParser
  3. закрыть файл
  4. обновить конфиг, теперь в памяти
  5. открыть тот же файл с помощью w +
  6. записать обновленный контент в памяти в файл
  7. закрыть файл
3 голосов
/ 15 марта 2011

Да, это нормально, что set работает с информацией в памяти, а не с файлом, из которого информация была первоначально прочитана.

write должно быть тем, что вы хотите.Как именно вы его использовали, что именно он делал, и как это отличалось от того, что вы хотели?

Кстати, вы, как правило, должны использовать ConfigParser.SafeConfigParser, а не ConfigParser.ConfigParser, если только для этого нет особой причины.поступая иначе.

Движение вперед с Python 3.x SafeConfigParser будет объединено / переименовано как ConfigParser, поэтому SafeConfigParser в конечном итоге устареет и будет прекращено.

1 голос
/ 19 декабря 2016
from ConfigParser import SafeConfigParser
parser = SafeConfigParser()
parser.read('properties.ini')
dhana = {'key': 'valu11'}
parser.set('CAMPAIGNS', 'zoho_next_campaign_map', str(dhana))
with open("properties.ini", "w+") as configfile:
    parser.write(configfile)
0 голосов
/ 15 февраля 2017

Я столкнулся с той же проблемой и выяснил, что это работает для меня:

def update_system_status_values(file, section, system, value):
    config.read(file)
    cfgfile = open(file, 'w')
    config.set(section, system, value)
    config.write(cfgfile)
    cfgfile.close()

1) Читать

2) Откройте его

3) Обновите его

4) Напиши

5) Закройте его

...