0

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

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

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

4

1 回答 1

2

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

于 2019-12-18T13:21:43.843 回答