如果在程序 运行 时重新启动,则使用 configparser 写入 .ini 文件会生成一个空文件

Writing to an .ini file using configparser results in an empty file if restarted while program is running

我有一个程序,每五秒 运行 一个方法。在这种方法中,我需要写入配置 .ini 文件,因为这是嵌入式软件,它必须能够处理系统在未知时间关闭的情况。但是,每次在程序运行ning 时系统关闭,当系统再次启动时.ini 文件是空的。

这是方法的代码 运行:

def HandleBatteryMonitoring():
    #some code before this...
    systemConfig = ConfigObj('settings.ini')
    systemConfig.filename = 'settings.ini'

    systemConfig['systemsettings']['batterychargebuslsb'] = str(chargingBatteryMSB)
    systemConfig['systemsettings']['batterychargebuslsb'] = str(chargingBatteryLSB)
    systemConfig['systemsettings']['batterydischargebusmsb'] = str(dischargeBatteryMSB)
    systemConfig['systemsettings']['batterydischargebuslsb'] = str(dischargeBatteryLSB)
    systemConfig['systemsettings']['batterypercentage'] = str(batteryPercentage)

    systemConfig.write()

目前它正在使用 ConfigObj,但这只是因为 ConfigParser 发生了同样的问题,我希望不同的库可以解决这个问题。这是使用 ConfigParser 时的相同代码:

def HandleBatteryMonitoring():
    #some code before this...
    systemConfig = configparser.ConfigParser('settings.ini')

    systemConfig['systemsettings']['batterychargebuslsb'] = str(chargingBatteryMSB)
    systemConfig['systemsettings']['batterychargebuslsb'] = str(chargingBatteryLSB)
    systemConfig['systemsettings']['batterydischargebusmsb'] = str(dischargeBatteryMSB)
    systemConfig['systemsettings']['batterydischargebuslsb'] = str(dischargeBatteryLSB)
    systemConfig['systemsettings']['batterypercentage'] = str(batteryPercentage)

    with open('settings.ini', 'w') as file:
        systemConfig.write(file)

从这里调用该方法:

def OnHandleCharging():
    while True:
        HandleBatteryCharging()
        time.sleep(5)

应该注意的是,虽然程序是 运行ning,但文件正在正确写入,我可以看到值随着文件的变化而变化。只有当系统在运行期间重新启动时才会发生这种情况。

我需要这个配置文件在重启时不被清空。对此的任何解决方案或解决方法将不胜感激。

尝试以 'r+' 打开文件并更改值,如果用 'w' 打开它可能会覆盖文件。