我想在我的 JSON 文件中创建一个字典列表。但是,问题在于 JSON 没有正确附加新数据。这是我的代码:
import json
json_data = [
{
'name': 'Luke',
'age': 27
},
{
'name': 'Harry',
'age': 32
},
]
with open('data.json', 'a+') as file:
json.dump(json_data, file)
JSON 只是在每次追加尝试时创建另一个完整列表:
[
{"name": "Luke", "age": 27},
{"name": "Harry", "age": 32}
][
{"name": "Luke", "age": 27},
{"name": "Harry", "age": 32}
][
{"name": "Luke", "age": 27},
{"name": "Harry", "age": 32}
]
我想要一个包含所有这些字典的列表。以下是理想情况下它应该是什么样子的示例:
[
{"name": "Luke", "age": 27},
{"name": "Harry", "age": 32},
{"name": "Luke", "age": 27},
{"name": "Harry", "age": 32},
{"name": "Luke", "age": 27},
{"name": "Harry", "age": 32},
]
我如何创建这样的东西? 谢谢你的帮助! :)
答案 0 :(得分:0)
使用 eval()
快速修复解决方案:
import json
json_data = [
{
'name': 'Luke',
'age': 27
},
{
'name': 'Harry',
'age': 32
},
]
with open('data.json', 'r+') as file: # read and append
stored_info = eval(file.readline()) # using eval() to convert list in file to an actual list
for i in stored_info:
json_data.append(i)
file.seek(0) # clear file
json.dump(json_data, file)
但是,这仅在 data.json
存在并且已经包含信息时才有效。您可能需要检查 data.json
是否存在(这意味着如果只有程序编辑 data.json
,则已经有信息):
...
try:
with open('data.json', 'r+') as file: # read and append
stored_info = eval(file.readline()) # using eval() to convert list in file to an actual list
for i in stored_info:
json_data.append(i)
file.seek(0) # clear file
json.dump(json_data, file)
except: # data.json doesn't exist
with open('data.json', 'w') as file:
json.dump(json_data, file)