You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7中能否将冒号设为ConfigParser配置文件的分隔符?

解决Python 2.7 ConfigParser用冒号作为键值分隔符的问题

既然没法升级到Python3,那我们可以通过自定义SafeConfigParser的子类来改写它的写入逻辑,强制用冒号作为键值对的分隔符,替代默认的等号。

自定义分隔符的ConfigParser子类

我们直接重写父类的write方法,把原本生成option = value的逻辑替换成option: value:

import ConfigParser
import os

class ColonSeparatedConfig(ConfigParser.SafeConfigParser):
    def write(self, fp):
        # 处理默认配置段
        if self._defaults:
            fp.write("[%s]\n" % ConfigParser.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
                # 格式化键值对为冒号分隔格式
                formatted_line = "%s: %s" % (key, str(value).replace('\n', '\n\t'))
                fp.write("%s\n" % formatted_line)
            fp.write("\n")

使用自定义类处理配置读写

接下来用这个子类替换原有的SafeConfigParser,就能实现你想要的效果:

# 替换成你的实际文件路径
myPath = "./"

config = ColonSeparatedConfig()
# 读取原有配置文件
config.read(os.path.join(myPath, 'settings.cfg'))
# 添加新配置段和配置项
config.add_section("new_section")
config.set('new_section', "option", "value")
# 写入新的配置文件
with open(os.path.join(myPath, 'new_settings.cfg'), 'w') as f:
    config.write(f)

执行后生成的new_settings.cfg内容会变成:

[new_section]
option: value

而且不管原settings.cfg里原本用的是等号还是冒号分隔,写入新文件时都会统一换成冒号格式,正好解决了你提到的原有分隔符被改成等号的问题。

内容的提问来源于stack exchange,提问作者Alexey Mishuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:25:04