如何在将数据转储到 JSON 文件之前清空它?

3

Python 3.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()

但这会产生结果:
第一组数据
{"chat_text": [{"a": "b", "c": "d", "e": "f"}]}

编辑后的数据

{"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()

result would be this :

first data

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

编辑后的数据

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

正如您所看到的,它用空格替换了第一个数据,我希望它是什么都没有...有任何想法吗?

为什么在更新json之前和之后都要加载,只需在更新“char_text”后将json加载到文件中即可。 - Andriy Ivaneyko
您的编辑数据json中存在语法错误。它不是有效的json。 - Daniel
为什么在更新 JSON 之前和之后都要加载,只需在更新 char_text 后将 JSON 加载到文件中即可。 - Andriy Ivaneyko
2
打开('r') -> 加载 -> 关闭 --> 打开('w') -> 转储 -> 关闭。 - polku
jsonFile.seek(0); json.dump(jdata, jsonFile) - Aran-Fey
1个回答

1
问题实质上是你以不同的模式两次打开了文件。
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()

所以前三行打开您的文件并将其加载到jdata中,然后关闭该文件。进行任何必要的操作。这一次,为了写入文件,再次打开文件。转储数据后,关闭文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接