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

使用Python的ConfigParser读取INI文件无法获取更新值

解决ConfigParser读取不到INI文件更新值的问题

这问题我之前也碰到过!核心原因就是ConfigParser会把配置内容缓存到内存中,你第一次调用Config.read()后,它就默认用内存里的旧数据,哪怕后续INI文件已经被修改,它也不会主动去重新读取文件内容——除非你明确告诉它这么做。

问题根源

你的代码应该是在程序启动时只调用了一次Config.read("vSSF_MCC_GR.INI"),之后每次循环执行时,直接用的是内存里缓存的初始配置,完全没去读已经更新的文件。

两种可行的解决方案

方案1:每次执行前重新创建ConfigParser实例

每次循环都新建一个ConfigParser对象,然后读取文件,这样肯定能拿到最新的内容:

import configparser
import time

while True:
    # 每次循环都创建新的ConfigParser实例
    config = configparser.ConfigParser()
    # 重新读取INI文件
    config.read("vSSF_MCC_GR.INI")
    
    print('Config Sections Are during execution:-', config.sections())
    
    # 这里执行你的保存逻辑,比如修改配置后写入文件
    # config['YourSection']['YourKey'] = 'UpdatedValue'
    # with open("vSSF_MCC_GR.INI", 'w') as f:
    #     config.write(f)
    
    time.sleep(60)

方案2:复用同一个实例,但每次读取前清空缓存

如果不想每次都新建对象,可以先清空当前ConfigParser里的所有配置,再重新读取文件:

import configparser
import time

# 初始化一次ConfigParser
config = configparser.ConfigParser()

while True:
    # 清空内存中的旧配置
    config.clear()
    # 重新读取文件内容
    config.read("vSSF_MCC_GR.INI")
    
    print('Config Sections Are during execution:-', config.sections())
    
    # 执行保存逻辑
    # ...
    
    time.sleep(60)

为什么原来的写法不行?

ConfigParser的read()方法是增量式读取——它会把读取到的新配置和已经在内存中的配置合并,而不是覆盖。如果文件里的配置项没有删除,只是修改了值,内存里的旧值不会被替换,所以你读取到的还是初始值。

内容的提问来源于stack exchange,提问作者Vishal Mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:51