• Python3,这应该是,配置文件最全的写法了。


    1、引言

    小鱼:小屌丝,走啊,出去撸串啊,
    小屌丝:没时间啊,鱼哥
    小鱼:嗯??? 啥事情让你忙的撸串都不去了
    小屌丝:我的BOSS让我写一个自动化平台,但是我不知道这些参数放在**.py文件里面,还是放在配置文件**里面。
    小鱼:就因为这个?
    小屌丝:对啊,
    小鱼:唉…我还以为啥事呢, 放在配置文件里。
    小屌丝:但是,我对配置文件写法不太熟(尴尬的一批)…

    在这里插入图片描述
    小鱼:… 每次都上当, 当当不一样。
    小屌丝:嘿嘿… 这不是要向你学习嘛。
    小鱼:… 为了撸串,认了。

    2、配置文件写法

    关于配置文件的写法, 常用的 大致有:
    - ini
    - json
    - toml
    - yaml

    接下来,我们就详细聊一聊 这四种常用配置文件的写法。

    2.1 ini

    ini 即 Initialize ,最早是在 Windows 上配置文件的存储格式。

    ini 文件的写法通俗易懂,往往比较简单,通常由节(Section)、键(key)和值(value)组成,就像以下形式

    localdb.ini

    [localdb]
    Host  = 127.0.0.1
    user   = root
    password = 888888
    port   = 3306
    database = mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Python 本身内置的 configparser 标准库,我们直接就可以用来对 ini 文件进行解析。

    如我们将上述内容保存在一个名为 test1.ini 的文件中,然后使用 read() 方法来进行解析和读取,最后通过 items() 方法来获取指定节点下的所有键值对。

    代码示例:

    # -*- coding:utf-8 -*-
    # @Time   : 2022-08-04
    # @Author : Carl_DJ
    
    from configparser import ConfigParser
    cfg = ConfigParser()
    
    db_path= cfg.read("D:\Project\Project\localdb.ini")
    #配置文件路径
    print(f"配置文件路径:{db_path}")
    
    db_msg = cfg.items("localdb")
    #配置文件内容
    print(f"配置文件内容:{db_msg}")
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    运行结果

    配置文件路径:['D:\\Project\\Project\\localdb.ini']
    配置文件内容:{'host': '127.0.0.1', 'user': 'root', 'password': '888888', 'port': '3306', 'database': 'mysql'}
    
    • 1
    • 2

    注意点

    • configparser 默认将值以字符串的形式呈现。

    上面代码,获取到键值对后,我们再来转换成字典,然后再进行传参。
    代码示例

    # -*- coding:utf-8 -*-
    # @Time   : 2022-08-04
    # @Author : Carl_DJ
    
    from configparser import ConfigParser
    import pymysql
    
    cfg = ConfigParser()
    
    db_path= cfg.read("D:\Project\Project\localdb.ini")
    #配置文件路径
    #print(f"配置文件路径:{db_path}")
    
    #对内容转换成字典
    db_msg = dict(cfg.items("localdb"))
    #链接数据库
    con = pymysql.connect(**db_msg)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2.2 json

    看到json,不要惊讶, 因为json也可以以配置文件存在的。
    例如:

    • npm(JavaScript 包管理工具类似 Python 的 pip)、
    • 微软出品的目前被广泛使用的 VSCode 编辑器

    都使用 json 编写配置参数。

    当然 json也是python标准库。
    我们通过load() 和loads()方法来导入文件式和字符串的 json 内容。

    localdb.json

    {
        "localdb":{
            "host": "127.0.0.1",
            "user": "root",
            "password": "888888",
            "port": 3306,
            "database": "mysql"
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    代码示例

    # -*- coding:utf-8 -*-
    # @Time   : 2022-08-04
    # @Author : Carl_DJ
    
    import json
    from pprint import pprint
    
    with open("D:\Project\Project\localdb.json") as js:
        cfg = json.load(js)['localdb']
        #以json格式输出
        pprint(cfg)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    运行结果

    {'database': 'mysql',
     'host': '127.0.0.1',
     'password': '888888',
     'port': 3306,
     'user': 'root'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 toml

    toml 格式(或 tml 格式)是 Github 联合创始人 Tom Preston-Werner 所提出的一种配置文件格式。
    toml 格式
    在这里插入图片描述
    从样例中可以看出,toml 有点类似于前面所讲的 ini 文件。但是它比 ini 扩展了更多的内容。

    当然,如果要使用toml,就需要先安装。
    老规矩:

    pip install toml
    
    • 1

    其它安装方式,直接看这两篇:

    localdb.toml

    [mysql]
    host     = "127.0.0.1"
    user     = "root"
    port     = 3306
    database = "test"
    
      [mysql.parameters]
      pool_size = 5
      charset   = "utf8"
    
      [mysql.fields]
      pandas_cols = [ "id", "name", "age", "date"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    代码示例

    # -*- coding:utf-8 -*-
    # @Time   : 2022-08-04
    # @Author : Carl_DJ
    
    import toml,os
    from pprint import pprint
    
    cfg = toml.load(os.path.expanduser("D:\Project\Project\localdb.toml"))
    pprint(cfg)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行结果

    {'mysql': {'database': 'test',
               'fields': {'pandas_cols': ['id', 'name', 'age', 'date']},
               'host': '127.0.0.1',
               'parameters': {'charset': 'utf8', 'pool_size': 5},
               'port': 3306,
               'user': 'root'}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以看到 toml 文件被间接地转化成了字典类型。

    2.4 yaml

    yaml 格式(或 yml 格式)是目前较为流行的一种配置文件,它早在 2001 由一个名为 Clark Evans 的人提出;
    同时它也是目前被广泛使用的配置文件类型,典型的就是 Docker 容器里的 docker-compose.yml 配置文件。

    YAML 官方早已经提供了相应的 Python 库进行支持,即 PyYAML,
    所以,第一步,需要安装

    pip install pyyaml
    
    • 1

    用法:
    与 json 库和 toml 库一样,通过 load() 方法来进行加载。

    但是,考虑到安全性, 所以,最好是使用 safe_load() 来代替 load() 方法

    localdb.yaml

    mysql:
      host: "127.0.0.1"
      port: 3306
      user: "root"
      password: "888888"
      database: "test"
    
      parameter:
        pool_size: 5
        charset: "utf8"
    
      fields:
        pandas_cols: 
          - id
          - name
          - age
          - date
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    代码示例:

    # -*- coding:utf-8 -*-
    # @Time   : 2022-08-04
    # @Author : Carl_DJ
    
    import os
    from pprint import pprint
    
    with open("D:\Project\Project\localdb.json") as ya:
    	cfg = yaml.safe_load(ya)
    	pprint(cfg)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行结果:

    {'mysql': {'database': 'test',
               'fields': {'pandas_cols': ['id', 'name', 'age', 'date']},
               'host': '127.0.0.1',
               'parameter': {'charset': 'utf8', 'pool_size': 5},
               'password': '888888',
               'port': 3306,
               'user': 'root'}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以看到最后结果和前面的 toml 库的解析结果基本一致。

    3、总结

    看到这里,今天的分享差不多就完事了。
    今天共分享了四种读取配置文件的方式:

    • ini
    • json
    • toml
    • yaml

    其实在实际工作中, 只需要掌握一种或者两种方式,即可。
    当然,如果要扩展自己的知识库,那就需要多掌握几种,
    毕竟谁会嫌弃自己的知识储备量少呢?

    我是小鱼

    • CSDN博客专家;
    • 51testing认证讲师;

    关注我,带你学习更多更有趣的python知识。

  • 相关阅读:
    前端实战|React18极客园——内容管理模块(表格筛选、频道、分页、删除、编辑跳转)
    Appium框架
    vue-router 相关面试题
    计算机基础学习(好文必看)
    LTpowerCAD II和LTpowerPlanner III
    【SublimeText】自定义快捷键
    python常用数据结构
    [笔记] Windows内核课程:保护模式《二》段寄存器介绍
    一文详解什么是软件部署
    mongodb集群
  • 原文地址:https://blog.csdn.net/wuyoudeyuer/article/details/126152209