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:如果没有这个参数,则会把内容在一行显示,不会换行和缩进;而这个参数的作用就是使写入内容换行、缩进。方便阅读

最终写入效果

 

posted @ 2024-07-27 23:45  一只野生的小胖鱼  阅读(1)  评论(0编辑  收藏  举报