簡體   English   中英

如果在程序運行時重新啟動,使用 configparser 寫入 .ini 文件會導致一個空文件

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

我有一個程序每五秒運行一個方法。 在這種方法中,我需要寫入配置 .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)

應該注意的是,當程序運行時,文件正在被正確寫入,我可以看到值隨着文件的變化而變化。 這僅在系統在運行期間重新啟動時發生。

我需要這個配置文件在重新啟動時不被清空。 對此的任何解決方案或解決方法將不勝感激。

嘗試以 'r+' 格式打開文件並更改值,如果您用 'w' 打開文件,它可能會覆蓋文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM