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



我有一个程序,每五秒运行一次方法。在这种方法中,我需要写入配置.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发生了同样的问题,我希望不同的库可以帮助解决这个问题。下面是使用配置解析器时的相同代码:

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)

应该注意的是,当程序运行时,文件被正确写入,我可以观察值随着文件的变化而变化。仅当系统在运行期间重新启动时,才会发生这种情况。

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

尝试以"r+"打开文件并更改 vaules,如果使用"w"打开文件,则可能会覆盖文件。

最新更新