Python:从Dictionary编写和更新.json文件

时间:2015-12-22 07:44:19

标签: python json

我正在生成一个字典,我想在.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格式文件到不同的行。像这样:

enter image description here

我使用以下代码:

with open('trial.json', 'w') as fp:
    json.dump(data, fp)

但这会将文件全部写入一行。如何编写它以便在不同的行中?

此外,假设我上面的文件有不同的行:我该如何更新它?例如,我想插入一个新行:

sample3 = {'Value 1': 1,  'Value 2': 8, 'Value 3': 4}

我应编写哪些代码才能将其插入同一文件而不删除以前的数据?所以这样:

enter image description here

使用前面的代码块擦除以前的数据。

编辑:“更新”文件(不是最优雅)的方法如下:

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选项。如果我使用它会弹出错误。

1 个答案:

答案 0 :(得分:1)

你需要这样做:

with open('trial.json', 'w') as fp:
    json.dump(data, fp, indent=2)

它会要求json.dump美化你的json编码文本。