python---json文件写入

使用到的知识点:os模块执行linux指令、json.dump()、with open as f

代码实现

import sys

import os

import json

# 向json文件file中添加内容data,其中data的类型为字典

def write_json(file, data):

        # 如果文件存在,则删除

        if (os.path.exists(file)):

                os.system(f"sudo rm {file}")

                print(f"文件{file}删除成功")

        # 创建目标json文件file,并赋予权限

        # 如果在root用户执行,可以删除sudo

        # os.system():用于执行linux指令

        os.system(f"sudo touch {file} && sudo chmod 777 {file}")

        # 打开文件file

        with open(file, 'r+', encoding='utf-8') as f:

                # 把data数据写入json文件中

                json.dump(data, f, ensure_ascii=False, indent=2)

                print("文件创建成功并且已写入文件!!!")

if __name__ == '__main__':

        json_file = sys.argv[1]

        data = {}

        data['name'] = "张三"

        data['age'] = 18

        data['sex'] = "女"

        data['score'] = {}

        data['score']['语文'] = 89

        data['score']['数学'] = 91

        data['score']['英语'] = 98

        write_json(json_file, data)

代码摘录解读

1、with open(file, 'r+', encoding='utf-8') as f:

也可以使用写作f = open()。但是这样的话,如果存在文件异常时,文件无法关闭。而这里使用with的好处就是,即使打开失败,也可以自动执行f.close()来关闭文件

常见文件操作mode:

w: 只写入,如果文件已有内容,会先清除已有内容

r: 只读

a: 追加内容,在已有文件的末尾追加

r+: 用于读写,也会清除已有内容

这块内容很好查询,这里就不多列举了

2、json.dump(data, f, ensure_ascii=False, indent=2)

把内容data写入使用open打开的文件f中

ensure_ascii=False:如果写入中文汉字,会乱码。加上这个参数后则不会乱码

indent=2:如果没有这个参数,则会把内容在一行显示,不会换行和缩进;而这个参数的作用就是使写入内容换行、缩进。方便阅读

最终写入效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值