Python3中常见配置文件写法汇总

目录
  • 1、引言
  • 2、配置文件写法
    • 2.1 ini
    • 2.2 json
    • 2.3 toml
    • 2.4 yaml
  • 3、总结

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"))
#链接数据库
con = pymysql.connect(**db_msg)

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 格式:

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

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

老规矩:

pip install toml

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

Python3自动安装第三方库,跟pip说再见

Python:一行代码,导入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,
           'user': 'root'}}

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

3、总结

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

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

ini

  • json
  • toml
  • yaml

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

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

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

以上就是Python3中常见配置文件写法汇总的详细内容,更多关于Python配置文件的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python ini配置文件示例详解

    目录 INI介绍 关于configparser INI文件格式 读取配置文件 写入配置文件 总结 INI介绍 INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置.由节(section). 键(key).值(value)构成.在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生.Python 中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI

  • Python3读写ini配置文件的示例

    ini文件即Initialization File初始化文件,在应用程序及框架中常作为配置文件使用,是一种静态纯文本文件,使用记事本即可编辑. 配置文件的主要功能就是存储一批变量和变量值,在ini文件中使用[章(Section)]对变量进行了分组,基本格式如下. # filename: config.ini [user] name=admin password=123456 is_admin=true [mysql] host=10.10.10.10 port=3306 db=apitest u

  • Python的ini配置文件你了解吗

    目录 INI介绍 关于configparser INI文件格式 读取配置文件 总结 INI介绍 INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置.由节(section). 键(key).值(value)构成.在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生.Python 中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的

  • 使用 Python 解析配置文件格式

    第一步是选择配置文件的格式:INI.JSON.YAML 或 TOML. 有时,程序需要足够的参数,将它们全部作为命令行参数或环境变量既不让人愉快也不可行. 在这些情况下,你将需要使用配置文件. 有几种流行的配置文件格式.其中包括古老的(虽然有时定义不明确)INI 格式,虽然流行但有时难以手写的 JSON 格式,使用广泛但有时在细节方面令人意外的 YAML 格式,以及很多人还没有听说过的最新出现的 TOML. 你的首要任务是选择一种格式,然后记录该选择.解决了这个简单的部分之后就是时候解析配置了.

  • Python配置文件yaml的用法详解

    目录 一.PyYaml 二.yaml语法 1.基本规则 2.yaml转字典 3.yaml转列表 4.复合结构 5.基本类型 6.引用 7.强制转换 8.分段 三.构造器(constructors).表示器(representers).解析器(resolvers ) 四.示例 YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互.YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的. 一.PyYaml 1.loa

  • Python 常见的配置文件写法梳理汇总

    目录 前言 为什么要写配置文件 ini json toml yaml 结尾 前言 在本文里列举的配置文件类型其复杂性由上到下依次增加:ini < json ≍ toml < yaml,它们之间各有优劣,可以根据自己实际的需求和团队协作要求来具体选择. 为什么要写配置文件 在开发过程中,我们常常会用到一些固定参数或者是常量.对于这些较为固定且常用到的部分,往往会将其写到一个固定文件中,避免在不同的模块代码中重复出现从而保持核心代码整洁. 这个固定文件我们可以直接写成一个 .py 文件,例如 se

  • 如何利用python 读取配置文件

    引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变量值时通过代码读取或者写入数据到该配置文件即可,使用配置文件的好处就是不用在程序员写死,可以使程序更灵活.因而对于python语言就封装了configparser模块,用来处理指定格式的文件(文件名称一般为xxx.ini),配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(

  • Python3中常见配置文件写法汇总

    目录 1.引言 2.配置文件写法 2.1 ini 2.2 json 2.3 toml 2.4 yaml 3.总结 1.引言 小鱼:小屌丝,走啊,出去撸串啊, 小屌丝:没时间啊,鱼哥 小鱼:嗯??? 啥事情让你忙的撸串都不去了 小屌丝:我的BOSS让我写一个自动化平台,但是我不知道这些参数放在**.py文件里面,还是放在配置文件**里面. 小鱼:就因为这个? 小屌丝:对啊, 小鱼:唉…我还以为啥事呢, 放在配置文件里. 小屌丝:但是,我对配置文件写法不太熟(尴尬的一批)… 小鱼:… 每次都上当,

  • 有关于PHP中常见数据类型的汇总分享

    PHP 数据类型 PHP 支持八种原始类型(type). 四种标量类型: string(字符串) integer(整型) float(浮点型,也作 double ) boolean(布尔型) 两种复合类型: array(数组) object(对象) 两种特殊类型: resource(资源) NULL(空) 查看变量类型 通过 gettype() 函数可以方便的查看某个变量的类型: 复制代码 代码如下: <?php$var_bool = TRUE; // a boolean$var_str = &qu

  • php中常见的sql攻击正则表达式汇总

    本文实例讲述了php中常见的sql攻击正则表达式.分享给大家供大家参考.具体分析如下: 我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中blind_sqli是假设已知的库名. 注:正则表达式中 ^[a-z] 表示字符串中开始字符是在 a-z范围内 复制代码 代码如下: index.php?id=1 and 1=(SELECT 1 FROM inform

  • Mysql 原生语句中save or update 的写法汇总

    背景   在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则update,不存在则insert. 如果使用Hibernate,它自带saverOrUpdate方法,用起来很方便,但如使用原生sql语句呢?   新手最常见的写法是,先通过select语句查询记录是否存在,存在则使用update语句更新,不存在则使用insert语句插入. 但是这样做明显不够优雅,存在几个问题: •为了执行一次更新操作,却在程序中使用了两次sql查询语句,在系统负载比较大的情况下,性能

  • C++ 中的Swap函数写法汇总

    swap函数几乎是所有初学者都写过的一个最基本的函数之一,通常是用它来了解函数概念.形参与实参.引用和指针.然而,这个极为基础的函数却有着非常重要的作用.正因为它的重要性.普遍性,意味着swap函数必须有着极高的安全性.本文给大家介绍C++ 常用编程--Swap函数有几种写法? 在说C++模板的方法前,我们先想想C语言里面是怎么做交换的. 举个例子,要将两个int数值交换,是不是想到下面的代码: void swap(int&a , int &b) { int t = a; a=b; b=t

  • MySQL中常见的几种日志汇总

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日常学习及运维过程中也会和这些日志打交道.本节内容将带你了解 MySQL 数据库中几种常用日志的作用及管理方法. 1.错误日志(errorlog) 错误日志记录着 mysqld 启动和停止,以及服务器在运行过程中发生的错误及警告相关信息.当数据库意外宕机或发生其他错误时,我们应该去排查错误日志. lo

  • ES6中常见基本知识点的基本使用实例汇总

    目录 前言 1.字面量的增强 2.解构Destructuring 3.let和const 4.作用域 5.模板子符串 6.函数 7.展开语法 8.数值表示 9.Symbol的基本使用 10.Set 11.WeakSet 12.Map 13.WeakMap 总结 前言 学习了coderwhy的JavaScript高级语法视频课的笔记 如有错误或者不合适的地方,敬请见谅,欢迎指出和拓展,谢谢各位了 1.字面量的增强 var name = 'xxx' var age = 12 var obj = {

  • JavaScript中常见的字符串操作函数及用法汇总

    本文实例总结了JavaScript中常见的字符串操作函数及用法.分享给大家供大家参考.具体分析如下: 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信你也跟我一样,发现字符串的处理是前端招聘过程中最常见的题型之一.这些题有一个特点,站在考官的角度去考虑,它考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的情况下,用比较简洁的方式写出答案来.可惜的是,很多开发人员,当然我也

  • python3中超级好用的日志模块-loguru模块使用详解

    目录 一. 使用logging模块时 二. loguru模块的基础使用 三. logurr详细使用 3.1 add 方法的定义 3.2 基本参数 3.3 删除 sink 3.4 rotation 配置 3.5 retention 配置 3.6 compression 配置 3.7 字符串格式化 3.8 Traceback 记录 一. 使用logging模块时 用python写代码时,logging模块最基本的几行配置,如下: import logging logging.basicConfig(

  • Python3.5常见内置方法参数用法实例详解

    本文实例讲述了Python3.5常见内置方法参数用法.分享给大家供大家参考,具体如下: Python的内置方法参数详解网站为:https://docs.python.org/3/library/functions.html?highlight=built#ascii 1.abs(x):返回一个数字的绝对值.参数可以是整数或浮点数.如果参数是一个复数,则返回它的大小. #内置函数abs() print(abs(-2)) print(abs(4.5)) print(abs(0.1+7j)) 运行结果

随机推荐