• Python--配置文件优化


    前言

    之前了解过了配置文件的简单使用,本章主要讲一些封装之类的操作。

    简单封装

    封装麻,可以提高代码复用性,也可以提高代码的可阅读性,更可以体现出写代码人的代码编写能力。当然也可以写一些迷惑性的封装整蛊后续接手项目的人(不建议!)。先扯到这,一起看看简单的封装!


    「YAML配置文件」

    """yaml"""
    import yaml

    def SQL():
        with open("config.yaml",encoding='utf8'as r:
            data = yaml.load(r,Loader=yaml.FullLoader)
            return data
    • 1

    「INI配置文件」

    import configparser

    def INIREAD():
        conf = configparser.ConfigParser()
        conf.read('config.ini',encoding='utf-8')
        case_value = conf.get('SQL','host')
        return case_value
    • 1

    「TOML配置文件」

    def TOML():
        to = toml.load('config,toml')
        return to
    • 1


    暂时举例上面三个,看过前面文章的,学会举一反三。

    优化封装

    「如何优化封装?」看上述,都有一个固定的东西需要填写,那就是路径。所以我们可以将路径写成「参数」的形式的,进行参数化

    「TOML配置文件优化」

    import toml

    def TOML(PATH: str):
        return toml.load(PATH)

    to = TOML('config,toml')
    print(to)
    • 1

    「再看ini配置文件,有路径,有参数,那么如何才能做到灵活呢,例如:我想传入一个参数提取配置文件对应的内容。也是参数化」

    def INIREAD(PATH: str, Key: str, value: str):
        conf = configparser.ConfigParser()
        conf.read(PATH, encoding='utf-8')
        case_value = conf.get(Key, value)
        return case_value

    INI = INIREAD('config.ini','SQL','host')
    print(INI)
    • 1

    其实ini配置文件这样编写个人感觉也没有太多的可便捷性,因为本身需要传入的参数较多。


    「再看看Yaml配置文件。跟toml配置文件并无太多的差异」

    import yaml

    def SQL(Path:str):
        with open(Path,encoding='utf8'as r:
            data = yaml.load(r,Loader=yaml.FullLoader)
            return data

    s = SQL('config.yaml')
    print(s)
    • 1

    小结



    这样写完你认为可以了吗?



    「还可以写一些异常情况捕捉,例如:路径写错了导致文件不存在的报错,如何更友好的告诉自己或者他人,这个文件不存在呢?」

    「此外就是空数据以及一些数据格式的问题处理了。对于此类问题,可以看看后续的内容,都会提及。」

  • 相关阅读:
    [附源码]Python计算机毕业设计Django学生综合数据分析系统
    贪心算法解决雷达站建站问题
    CutMix原理与代码解读
    Java如何获取request请求body参数中xml数据?
    微信小程序可拖拽视频播放案例
    【Linux】自制shell
    2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析
    ABP 6.0.0-rc.1的新特性
    【无标题】
    【前端设计模式】之适配器模式
  • 原文地址:https://blog.csdn.net/weixin_52040868/article/details/127741484