2 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
以模式打開(kāi)文件會(huì)w+
截?cái)嗨虼艘坏┠鷩L試這樣做,就沒(méi)有什么可讀取的了。此模式旨在讓您在打開(kāi)文件后返回并閱讀您所寫(xiě)的內(nèi)容。
由于您必須閱讀該文件,因此您需要以r
模式打開(kāi)它。由于您想稍后替換整個(gè)內(nèi)容,因此您必須截?cái)嗨⒁?code>w模式打開(kāi)它。所以,請(qǐng)繼續(xù)使用您的原始版本!

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
正如蒂埃里所說(shuō),w+截?cái)辔募獎(jiǎng)h除數(shù)據(jù)——因此沒(méi)有可讀取的內(nèi)容。
使用另一種讀/寫(xiě)模式打開(kāi)文件, r+-- 句柄設(shè)置為文件的開(kāi)頭,然后添加一個(gè)f.seek(0),您的代碼將正常工作。
with open(self._RECORDS_FILE_PATH, 'r+') as f:
recordsData = json.load(f)
newRecord = {
"timestamp": int(round(time.time() * 1000)),
"rfid": rfid
}
recordsData["recordsList"].insert(0, newRecord)
f.seek(0) # go back to beginning of file
json.dump(recordsData, f)
添加回答
舉報(bào)