厦门市建设与管理局 官方网站,新手做网站,手机设计图制作软件app免费,深圳 建设银行国际互联网站1. 引言
当我们设计软件时#xff0c;我们通常会花费大量精力来编写高质量的代码。但这往往还不够#xff0c;一个好的软件还应该考虑其整个系统#xff0c;如测试、部署、网络等。其中最重要的一个方面是配置管理。 良好的配置管理应允许在任何环境中执行软件而不更改代码…1. 引言
当我们设计软件时我们通常会花费大量精力来编写高质量的代码。但这往往还不够一个好的软件还应该考虑其整个系统如测试、部署、网络等。其中最重要的一个方面是配置管理。 良好的配置管理应允许在任何环境中执行软件而不更改代码。最常见的配置包括数据库认证配置、部署服务器的主机名、动态参数等。在本文中我想与大家分享一些配置管理的良好实践以及如何在Python中实现它们。 闲话少说我们直接开始吧
2. 如何选择配置文件的格式
事实上只要代码能够读取和解析配置文件的内容那么配置文件的格式就没有任何限制。但是业内有一些好的做法。最常见和标准化的格式是YAML、JSON、TOML和INI。
一个好的配置文件一般需要满足以下三个标准
易于阅读和编辑它应该以文本为基础以易于理解的方式进行构建。即使是非开发人员也应该能够阅读。允许注释配置文件不是只有开发人员才能读取的文件。当非开发人员试图理解代码行为时注释就显得很重要。编写注释是快速解释某些事情的一种方式从而使配置文件更具表现力。易于部署所有操作系统和环境都应接受该配置文件。
如果你仍然不知道哪一个更好但是在Python中我推荐的答案将是YAML或INI。这是由于YAML和INI被大多数Python程序和包所接受。
3. INI文件示例
INI文件通常是最简单的解决方案由于它只有一个层次结构。然而INI文件中没有数据类型所有内容都被编码为字符串。 示例如下
[APP]
ENVIRONMENT test
DEBUG True
# Only accept True or False[DATABASE]
USERNAME xiaoxu
PASSWORD xiaoxu
HOST 127.0.0.1
PORT 5432
DB xiaoxu_database4. YAML文件示例
使用YAML针对上述示例的相同配置如下所示。如下所示YAML文件支持嵌套结构。此外YAML也支持一些常见的数据类型如字符串、整数、双精度、布尔值、列表、字典等。
APP:ENVIRONMENT: testDEBUG: True# Only accept True or FalseDATABASE:USERNAME: xiaoxuPASSWORD: xiaoxuHOST: 127.0.0.1PORT: 5432DB: xiaoxu_database5. 使用Cofigureparser读取ini文件
首先我们来介绍Python专门为配置管理而设计的包我们从内置的配置包Configureparser开始。 Configureparser主要用于读取和写入INI文件但它也同样支持字典和可迭代文件对象作为输入。每个INI文件由多个部分组成其中有多个键、值对。 下面是上述ini文件读取的示例
import configparserdef 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的布尔值。
6. yaml文件读取示例
Python有专门的内置包来解析yaml文件。由于安全性问题建议使用yaml.safe_load()而不是yaml.load()来进行yaml文件的读取。 示例代码如下
import yamldef read_yaml(file_path):with open(file_path, r) as f:return yaml.safe_load(f)
data read_yaml(data/sample.yaml)
print(data)7. 总结
本文重点介绍了Python中配置文件的读取主要包括常见的ini和yaml两种文件格式并给出了相应的代码示例。
您学废了嘛