7

我认为ConfigParser模块的set方法会更新给定的字段,但是,更改似乎只保留在内存中,并没有进入配置文件。这是正常行为吗?

我也尝试过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

4 回答 4

12
  1. 打开配置文件
  2. 使用 ConfigParser 读取内容
  3. 关闭文件
  4. 更新配置,现在在内存中
  5. 用 w+ 打开同一个文件
  6. 将更新的内存内容写入文件
  7. 关闭文件
于 2012-11-18T09:37:33.373 回答
4
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)
于 2016-12-19T03:20:55.440 回答
3

set是的,对内存中的信息而不是最初读取信息的文件进行操作是正常的。

write应该是你想要的。你到底是如何使用它的,它到底做了什么,这与你想要的有什么不同?

顺便说一句,您通常应该使用ConfigParser.SafeConfigParser而不是ConfigParser.ConfigParser,除非有特定的理由不这样做。

向前推进 Python 3.xSafeConfigParser将被合并/重命名,ConfigParser因此SafeConfigParser最终将被弃用并逐步淘汰。

于 2011-03-14T23:20:35.247 回答
2

我遇到了同样的问题,并发现这对我有用:

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) 关闭它

于 2017-02-15T03:10:54.097 回答