python写入json文件追加数据不覆盖

python写入json文件追加数据


要求:
1.将一条数据xxx:“xxx”插入到python的字典中作为一个新的键值对
2.将该字典写入json文件

实现:
1.使用字典的update方法
这里有一个原则:
如果被更新的字典中己包含对应的键值对,那么原 value 会被覆盖;
如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。

x = {'a': a, 'b':b, 'c':c}
y = {'a': d, 'e': e}
a.update(b)

输出:'a’就被覆盖了,'e’则被添加进去了

{'a': d, 'b':b, 'c':c, 'e': e}
x = {'a': a, 'b':b, 'c':c}
d='d'
e='e'
x.update({d:e})

输出:

{'a': a, 'b':b, 'c':c, 'd':e}

2.这里是用的with open as f的方法
一搜这个方法,里面大多是写’w’或者’r’用来写或者读文件
但我在实践中发现,用w的话底层逻辑是每次写的文件都会覆盖之前同名的文件,那么如果我要在同一个文件中追加数据的话就无法用w模式,有人会觉得写个循环就好了,但是问题就在于,我这个写操作所在的方法本身就在一个循环里,如果在对写文件操作加一个循环,每次用json.load解析文件再去更新里面的数据,再写入数据,那时间复杂度将会非常高,而我的要求是写100w条数据,如此造成的影响可想而知。
实际上,只要将模式改为a模式即可实现追加数据的操作

with open("test.json", 'a',) as f:
    json.dump(data, f,ensure_ascii=False)
    f.write('\n')		

加\n的目的就是因为dump无法自动换行,每次写入都需要加一个换行符

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值