使用ConfigParser -Python-更新字段

Fra*_*sco 5 python configparser

我认为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')
Run Code Online (Sandbox Code Playgroud)

acc*_*uya 10

  1. 打开配置文件
  2. 使用ConfigParser阅读内容
  3. 关闭文件
  4. 现在在内存中更新配置
  5. 用w +打开同一个文件
  6. 将更新的内存内容写入文件
  7. 关闭文件


Gar*_*han 3

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

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

顺便说一句,除非有特殊原因,否则通常应该使用ConfigParser.SafeConfigParser而不是使用。ConfigParser.ConfigParser

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

  • 假设单个字段定义在文件的开头(或者实际上是结尾以外的任何地方)。那么您的选择是:(1) 重写文件或 (2) 追加到文件并接受冗余。如果反复更改配置,选项 2 会变得非常糟糕,因此选项 1 也是如此。如果这违背了您的常识,那么您可能需要考虑一下您的常识是否需要进行一些调整。 (3认同)