首页 > 编程语言 >Python-JSON文件操作简化的工具库,支持读取和修改

Python-JSON文件操作简化的工具库,支持读取和修改

时间:2023-11-28 17:46:15浏览次数:32  
标签:last 读取 Python self current JSON key path data

  • 这是一个关于python操控json的工具类
  • 可以利用get方法以路径的形式查看内容,输出的格式为列表或字典
  • change方法用于修改指定路径下的内容,支持修改内容为字典和列表的形式
  • 修改后使用save方法进行保存

以下是代码:

import json
import time
import random


class Error_message:
    def __init__(self):
        self.path_error = '路径错误!'


class MainException(Exception):
    pass


class Control_Json:
    def __init__(self):
        self.path = '/you/json/path'
        self.conf = open(self.path, 'r+')
        self.file = json.load(self.conf)

    def get(self, path):
        """
        输入路径获取路径下的内容
        """
        current_data = self.file
        for key in path.split('.'):
            # 如果 key 是数字,表示是列表的索引
            if key.isdigit():
                key = int(key)
                if isinstance(current_data, list) and key < len(current_data):
                    current_data = current_data[key]
                else:
                    return False
            elif key in current_data:
                current_data = current_data[key]
            else:
                return False
        return current_data

    def change(self, path, change_content):
        """
        修改指定路径下的内容,仅限于修改单个值
        """
        keys = path.split('.')
        current_data = self.file
        # 遍历路径,找到最终要修改的值所在的位置
        for key in keys[:-1]:
            if key.isdigit():
                key = int(key)
                if isinstance(current_data, list) and key < len(current_data):
                    current_data = current_data[key]
                else:
                    raise MainException(Error_message().path_error)
            elif key in current_data:
                current_data = current_data[key]
            else:
                raise MainException(Error_message().path_error)
        # 修改指定路径下的内容
        last_key = keys[-1]
        if last_key.isdigit():
            last_key = int(last_key)
            if isinstance(current_data, list) and last_key < len(current_data):
                current_data[last_key] = change_content
            else:
                raise MainException(Error_message().path_error)
        elif last_key in current_data:
            current_data[last_key] = change_content
        else:
            raise MainException(Error_message().path_error)

    def save(self):
        """
        保存修改后的 JSON 数据到文件
        """
        with open(self.path, 'w') as file:
            json.dump(self.file, file, indent=2)

标签:last,读取,Python,self,current,JSON,key,path,data
From: https://www.cnblogs.com/liuada/p/17862530.html

相关文章

  • py01-python之进程
    一、进程1、概念(1)并发:在一段时间内交替去执行多个任务。例如对于单核cpu处理多任务,操作系统轮流让各个任务交替执行(任务数量大于CPU的核心数)。(2)并行:在一段时间内真正的同时一起执行多个任务。例如对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内......
  • python保留小数点后几位的方法
    一、保留小数点后n位方法一:使用字符串格式化注意:使用字符串格式化后的是字符串格式a=12.3456print("%.3f"%a)#保留小数点后三位print("%.2f"%a)#保留小数点后两位输出12.34612.35方法二:使用round内置函数注意:使用round后的是浮点数格式a=12.3456a1=round(a......
  • Python常用的数据处理函数和模块
    Python还提供了许多其他用于数据处理和转换的内置函数和模块。以下是一些常用的数据处理函数和模块:sortedsorted(iterable,key=func,reverse=False)用于对可迭代对象进行排序。你可以指定一个可选的key函数来自定义排序规则,以及一个可选的reverse参数来控制升序或降序排......
  • python中列表(list)拼接的三种方法
    你可以使用Python中的列表拼接操作来合并两个或多个列表。Python提供了几种方式来实现列表的拼接,包括使用+运算符、extend()方法和列表解析。以下是这些方法的示例:1.使用+运算符:list1=[1,2,3]list2=[4,5,6]concatenated_list=list1+list2print(concate......
  • python 入门
    type(183)显示的是183的数据类型intprint("183")显示183print(183,172)显示183172age=10name=strehdprint("%d %s"%(age,name))显示的是10strehd还有一张传参形式print(f"  {name}11{age}")显示的是strehd11109//2=49%2=19**2=81%m.nd比如%7.2d,限制了数字的宽度和精度......
  • 使用Python中的tarfile :解决Mac和Linux 打包冲突问题
    Python对tar包的操作目的:兼容linux和macOS系统上都能正常打包和解包起初:在macOS上使用命令tar打得包在linux上根本无法解开。原因:https://blog.csdn.net/qq_44214671/article/details/127804905解决办法:python是兼容MacOS和Linux,直接用Python的tarfile操作tar包。https://do......
  • python脚本中调用django环境
    #在脚本中调用djagno服务importosif__name__=='__main__':#1引入django配置文件os.environ.setdefault('DJANGO_SETTINGS_MODULE','day67.settings')#2让djagno启动importdjangodjango.setup()#3使用表模型fromapp01impor......
  • python用户交互
    用户交互:就是在计算机中input/输入数据,计算机print/输出结果如何与用户交互:输入input,输出:print ......
  • json-server的增删改查与基本使用
    1.查看是否安装node2.查看是否安装npm3.安装json-server4.查看json-server的版本5.json-server--watchdb.json6.配置db.json文件下载 apifoxjson-server的增删改查在apifox中创建一个快捷调试直接点击发送,当body中返回下面内容,表示添加成功注意:不需要添加id,他会自......
  • Python获取远程指定目录下所有文件的绝对路径
    importparamikoimportos#SSH连接信息hostname="your_remote_host"port=22username="your_username"password="your_password"#远程目录路径remote_directory="/data"#建立SSH连接ssh=paramiko.SSHClient()ssh.se......