如何在将数据转储到i之前清空json文件

2024-06-02 07:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

Python3.5

嗨,我有以下代码来向json数据添加元素:

jsonFile = open("json.json", mode="r+", encoding='utf-8')
jdata = json.load(jsonFile)
jdata['chat_text'].insert(0, {'x':'x'})
json.dump(jdata, jsonFile)
jsonFile.close()

但结果是:

第一个数据

^{pr2}$

编辑数据

{"chat_text": [{"a": "b", "c": "d", "e": "f"}]}{"chat_text": [{'x':'x'},{"a": "b", "c": "d", "e": "f"}]}

所以我写了这个代码:

jsonFile = open("json.json", mode="r+", encoding='utf-8')
jdata = json.load(jsonFile)
jdata['chat_text'].insert(0, {'x':'x'})
open('json.json', mode='w').close() #deleting first data
json.dump(jdata, jsonFile)
jsonFile.close()

结果是:

第一个数据

^{pr2}$

编辑数据

                                               {"chat_text": [{"x","x"},{"a": "b", "c": "d", "e": "f"}]}

如你所见,它用空间代替了第一个数据,我希望它什么都不是。。。在

有什么想法吗?在


Tags: 数据代码textjsonclosemodechatload
1条回答
网友
1楼 · 发布于 2024-06-02 07:16:18

问题本质上是你在不同的模式下打开文件两次。在

jsonFile = open("json.json", mode="r")
jdata = json.load(jsonFile)
jsonFile.close()
jdata['chat_text'].insert(0, {'x':'x'})
jsonFile = open('json.json', mode='w+')
json.dump(jdata, jsonFile)
jsonFile.close()

因此,前3行打开文件并将其加载到jdata中,然后关闭该文件。 做你需要的任何操作 再次打开文件,这次要写入。转储数据,关闭文件。在

相关问题 更多 >