ConfigParser python 2.7。配置写入后,分隔符变为“ =”

时间:2018-11-14 07:11:34

标签: python python-2.7 configparser

我的文件如下所示

[SectionOne]
Status: Single
Name: Derek
Value: Yes
Age: 30
Single: True

在我阅读并修改了一个字段之后,定界符被更改为'=',而不是如下所示的':'

[SectionOne]
Status = Married
Name = Derek
Value = Yes
Age = 30
Single = True

我正在使用python 2.7,现在无法迁移到新版本的python。

代码在下面

Config = ConfigParser.ConfigParser()
Config.read("Bacpypes.ini")
cfgfile = open("Bacpypes.ini")
Config.set('SectionOne', 'Status', 'Married')
Config.write(cfgfile
cfgfile.close()

预先感谢

1 个答案:

答案 0 :(得分:1)

尝试对ConfigParser进行子类化以修改其行为,以便它写入:而不是=

class MyConfigParser(ConfigParser.ConfigParser):

    def write(self, fp):
        """Write an .ini-format representation of the configuration state."""
        if self._defaults:
            fp.write("[%s]\n" % DEFAULTSECT)
            for (key, value) in self._defaults.items():
                fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t')))
            fp.write("\n")
        for section in self._sections:
            fp.write("[%s]\n" % section)
            for (key, value) in self._sections[section].items():
                if key == "__name__":
                    continue
                if (value is not None) or (self._optcre == self.OPTCRE):
                    key = ": ".join((key, str(value).replace('\n', '\n\t')))
                fp.write("%s\n" % (key))
            fp.write("\n")

然后使用MyConfigParser

config = MyConfigParser()
config.read("Bacpypes.ini")
...

此外,您的代码中还有两个错误:

  • 您没有打开文件进行写入。

  • 您的括号不平衡。

两者都应阻止代码运行。