python对json格式原文件追加内容

python对json格式原文件追加内容

之前有个需求:
要求爬取的数据是json格式的;json格式在 网络数据传输中使用很广泛;
类似于python的字典格式;其本质是字符串
但是呢,如果稍微不注意我们会发现我们保存的格式
不是特别正确会出现如下格式:

{"a": {"password": "123", "status": false, "timeout": 1555380013.9477446}}
{"b": {"password": "123", "status": false, "timeout": 1555380013.9477446}}
{"c": {"password": "123", "status": false, "timeout": 1555380013.9477446}}
{"d": {"password": "123", "status": false, "timeout": 1555380013.9477446}}

这样的话 使用json格式去加载文件的话就会报错
从网上找了很多例子
但是没有成功;

今天自己偶然的机会,又看了下python操作文件基础;这个方法或许可以解决:
直接上代码:(方便以后要读取该json文件的人,减少代码量)

import json

with open('test2.json','a+',encoding="utf-8") as f:
    f.seek(0)  # 因为是追加方式打开,默认偏移量再最后面,我们调整到开头
    if f.read() =='':  # 判断是否为空,如果为空的话创建一个新的字典格式
        print('执行了吗')
        data = {}
    else:
        f.seek(0)
        data = json.load(f)
    print(data)

    data['a']="我爸是赵四"
    data['b']="我爸是李刚"  # 可以在第二遍运行时修改一下看看效果
    data['e']="我爸是李刚"
    data['f'] = {'a':'嵌套啊'}
    print(data)

    f.seek(0)# 设置文件当前位置 0代表开始处 其实有两个参数 offset,whence (whence常用有三个参数0,1,2;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。)
    # 如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。
    f.truncate() # 从开头截断,截断文件为size个字符,无参代表 从当前位置截断,截断之后后面的所有字符都被删除
    json.dump(data,f,indent=2,ensure_ascii=False)

第一次运行:
在这里插入图片描述
修改后第二次运行:添加内容
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积极向上的Coder

一杯咖啡支持原创,技术支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值