大数跨境
0
0

Python配置文件管理之ini和yaml文件读取

Python配置文件管理之ini和yaml文件读取 AI算法之道
2023-02-18
1
导读:本文重点介绍了Python中配置文件的读取,主要包括常见的ini和yaml两种文件格式,并给出了相应的代码示例。






01


引言



当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等。其中最重要的一个方面是配置管理。

良好的配置管理应允许在任何环境中执行软件而不更改代码。最常见的配置包括数据库认证配置、部署服务器的主机名、动态参数等。在本文中,我想与大家分享一些配置管理的良好实践,以及如何在Python中实现它们。


闲话少说,我们直接开始吧!





02


如何选择配置文件的格式


事实上,只要代码能够读取和解析配置文件的内容,那么配置文件的格式就没有任何限制。但是,业内有一些好的做法。最常见和标准化的格式是YAML、JSON和INI。

一个好的配置文件一般需要满足以下三个标准:

易于阅读和编辑:它应该以文本为基础,以易于理解的方式进行构建。即使是非开发人员也应该能够阅读。 

允许注释:配置文件不是只有开发人员才能读取的文件。当非开发人员试图理解代码行为时,注释就显得很重要。编写注释是快速解释某些事情的一种方式,从而使配置文件更具表现力。

易于部署:所有操作系统和环境都应接受该配置文件。


如果你仍然不知道哪一个更好,但是在Python中,我推荐的答案将是YAML或INI。这是由于YAML和INI被大多数Python程序和包所接受。




03


 INI文件示例


INI文件通常是最简单的解决方案,由于它只有一个层次结构。然而,`INI`文件中没有数据类型,所有内容都被编码为字符串。

示例如下:

[APP]ENVIRONMENT = testDEBUG = True# Only accept True or False
[DATABASE]USERNAME = xiaoxuPASSWORD = xiaoxuHOST = 127.0.0.1PORT = 5432DB = xiaoxu_database




04


YAML文件示例


使用YAML针对上述示例的相同配置如下所示。如下所示,`YAML`文件支持嵌套结构。此外,YAML也支持一些常见的数据类型,如字符串、整数、双精度、布尔值、列表、字典等。

APP:  ENVIRONMENT: test  DEBUG: True  # Only accept True or False
DATABASE: USERNAME: xiaoxu PASSWORD: xiaoxu HOST: 127.0.0.1 PORT: 5432 DB: xiaoxu_database






05


  使用Cofigureparser读取ini文件


首先,我们来介绍Python专门为配置管理而设计的包,我们从内置的配置包Configureparser开始。Configureparser主要用于读取和写入INI文件,但它也同样支持字典和可迭代文件对象作为输入。每个INI文件由多个部分组成,其中有多个键、值对。

下面是上述ini文件读取的示例:

import configparser
def read_ini(file_path, config_json): config = configparser.ConfigParser() config.read(file_path) for section in config.sections(): for key in config[section]: print((key, config[section][key])) read_ini("source/data/sample.ini", config_json)# ('environment', 'test')# ('debug', 'True')# ('username', 'xiaoxu')# ('password', 'xiaoxu')# ('host', '127.0.0.1')# ('port', '5432')# ('db', 'xiaoxu_database')

Configureparser并不会猜测配置文件中的数据类型,因此每个配置项都被存储为字符串。但它提供了一些将字符串转换为正确数据类型的方法。这里面最有趣的是布尔类型,因为它能够识别诸如yes/no、on/off、true/false和1/0的布尔值。





06


yaml文件读取示例


Python有专门的内置包来解析yaml文件。由于安全性问题,建议使用yaml.safe_load()而不是yaml.load()来进行yaml文件的读取。

示例代码如下:

import yaml
def read_yaml(file_path): with open(file_path, "r") as f: return yaml.safe_load(f)data = read_yaml("data/sample.yaml")print(data)




07


总结


本文重点介绍了Python中配置文件的读取,主要包括常见的ini和yaml两种文件格式,并给出了相应的代码示例。


您学废了嘛?






点击上方小卡片关注我






寄语:

所求皆如愿,

所行皆坦途。

多喜乐,长安宁。

【声明】内容源于网络
0
0
AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
内容 573
粉丝 0
AI算法之道 一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
总阅读129
粉丝0
内容573