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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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

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}")

运行结果


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

注意点


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"))
#链接数据库

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"
    }
}

代码示例


# -*- 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)

运行结果:


{'database': 'mysql',
 'host': '127.0.0.1',
 'password': '888888',
 'port': 3306,
 'user': 'root'}

2.3 toml

toml 格式(或 tml 格式)是 Github 联合创始人 Tom Preston-Werner 所提出的一种配置文件格式。

toml 格式:

image.png

从样例中可以看出,toml 有点类似于前面所讲的 ini 文件。但是它比 ini 扩展了更多的内容。


当然,如果要使用toml,就需要先安装。

老规矩:


pip install toml

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


《Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!》

《Python3:我低调的只用一行代码,就导入Python所有库!》

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"]

代码示例


# -*- 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)

运行结果


{'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'}}

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


2.4 yaml

yaml 格式(或 yml 格式)是目前较为流行的一种配置文件,它早在 2001 由一个名为 Clark Evans 的人提出;

同时它也是目前被广泛使用的配置文件类型,典型的就是 Docker 容器里的 docker-compose.yml 配置文件。


YAML 官方早已经提供了相应的 Python 库进行支持,即 PyYAML,

所以,第一步,需要安装


pip install pyyaml

用法:

与 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

代码示例:


# -*- 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)

运行结果:


{'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,

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


3、总结


看到这里,今天的分享差不多就完事了。

今天共分享了四种读取配置文件的方式:


ini

json

toml

yaml

其实在实际工作中, 只需要掌握一种或者两种方式,即可。

当然,如果要扩展自己的知识库,那就需要多掌握几种,

毕竟谁会嫌弃自己的知识储备量少呢?

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Python
百度搜索:蓝易云【Python 使用ConfigParser操作ini配置文件教程。】
请注意,实际的使用可能涉及更复杂的配置文件结构和操作。你可以参考 `ConfigParser`的官方文档以获取更多详细信息和示例。
270 0
|
4月前
|
Rust Python
Python 解析 toml 配置文件
Python 解析 toml 配置文件
75 1
|
4月前
|
Python
Python 解析 yaml 配置文件
Python 解析 yaml 配置文件
78 0
|
4月前
|
Python
Python 解析 ini 配置文件
Python 解析 ini 配置文件
41 0
|
5月前
|
Python
[python]从环境变量和配置文件中获取配置参数
[python]从环境变量和配置文件中获取配置参数
|
5月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
191 0
|
5月前
|
测试技术 数据安全/隐私保护 网络虚拟化
干货 | 如何用python实现每天定时备份交换机配置文件? 真香~
干货 | 如何用python实现每天定时备份交换机配置文件? 真香~
|
5月前
|
Python
原创 | 如何在H3C设备上执行Python脚本实现配置文件的替换?
原创 | 如何在H3C设备上执行Python脚本实现配置文件的替换?
|
JSON 关系型数据库 MySQL
Python--toml配置文件
Python--toml配置文件
198 0
|
8月前
|
存储 XML JSON
Python如何读写配置文件?
Python如何读写配置文件?
104 0