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

赞美诗

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

结果是这样的:

第一数据

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

编辑数据

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

如您所见,它用空间替换了第一个数据,我希望它什么都不是...

有任何想法吗?

克拉斯·阿迪诺瓦(Klaas Ardinois)

问题本质上是您以不同的模式打开了两次文件。

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中,然后关闭该文件。进行所需的任何操作再次打开文件,以进行写入。转储数据,关闭文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章