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

时间:2016-09-02 09:32:28

标签: python 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"}]}

你可以看到它用空格取代了第一个数据,我希望它什么都不是......

任何想法?

1 个答案:

答案 0 :(得分: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()

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