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"}]}
你可以看到它用空格取代了第一个数据,我希望它什么都不是......
任何想法?
答案 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中,然后关闭该文件。 做你需要的任何操作 再次打开文件,写入此时间。转储数据,关闭文件。