我正在生成一个字典,我想在.json文件中编写它。假设我有以下代码:
data = []
sample = {'Value 1': 16, 'Value 2': 1, 'Value 3': 2}
sample2 = {'Value 1': 10, 'Value 2': 1, 'Value 3': 2,'Value 4':[1,4]}
data.append(sample)
data.append(sample2)
我想将data
写入json格式文件到不同的行。像这样:
我使用以下代码:
with open('trial.json', 'w') as fp:
json.dump(data, fp)
但这会将文件全部写入一行。如何编写它以便在不同的行中?
此外,假设我上面的文件有不同的行:我该如何更新它?例如,我想插入一个新行:
sample3 = {'Value 1': 1, 'Value 2': 8, 'Value 3': 4}
我应编写哪些代码才能将其插入同一文件而不删除以前的数据?所以这样:
使用前面的代码块擦除以前的数据。
编辑:“更新”文件(不是最优雅)的方法如下:
with open('trial.json', 'w',encoding='utf-8') as fp:
json.dump(data, fp)
sample3 = {'Value 1': 1, 'Value 2': 8, 'Value 3': 4}
with open('trial.json', mode='r', encoding='utf-8') as feedsjson:
feeds = json.load(feedsjson)
with open('trial.json','w',encoding='utf-8') as feedsjson:
feeds.append(sample3)
json.dump(feeds,feedsjson)
可以看出我没有使用indent
选项。如果我使用它会弹出错误。
答案 0 :(得分:1)
你需要这样做:
with open('trial.json', 'w') as fp:
json.dump(data, fp, indent=2)
它会要求json.dump
美化你的json编码文本。