1. 配置文件是什么?
配置文件是用于配置计算机程序的参数和初始化设置的文件。如果没有这些配置,程序可能无法执行。
比如现在你要开发一款app, 当部署这款app时,你需要配置它的 host 地址、数据库地址、数据库名称,这些都可以作为配置项写入配置文件。当项目上线,需要换一个环境运行时,只需要修改配置文件,不需要去代码当中到处查找。
配置文件通常是key/value的形式存在,任何支持解析key/value形式的文件都是可以作为配置文件的。
现在主流的配置文件格式非常多,比如:
Linux系统中的.bashrc
YAML
TOML
JSON
XML
INI
这些都是常用的配置文件格式。接下来,我们来看看用得最多的几种配置文件怎么编写,又是如何通过python语言解析的。
2. yaml
YAML是目前最推荐的配置文件格式。优秀的配置文件标准它几乎都有:
容易阅读和修改,支持注释。
支持丰富的数据类型。
不同格式的明确表达。
yaml使用时需要注意:
yaml强制缩进。虽然不规定具体缩进几个空格,但是同一级的内容要保持相同的缩进。
冒号后面一定要加空格, 否则无法解析。
python解析 yaml 可以使用pyyaml库,操作和标准的文件操作非常类似:
得到的data就是解析后的数据,在python当中,它是一个嵌套的字典:
想获取某一项配置,再通过字典的操作获取:
3. ini
ini格式是用得非常多的配置文件格式,有大量的项目都使用 ini 编写配置文件,它比较适合配置项的数据类型只是简单的字符串、数字的情况,如果涉及数组和key/value的嵌套,会比较吃力。
ini格式有几个概念需要了解。用 的叫做 section, 用来对配置项进行分组, 下面的 port 和 name 叫做 option。如果想获取某一个 option,必须先要获取 section。
通过 python解析 ini:
ini 配置格式有几个注意点:
section 无法嵌套, 嵌套后的效果和没有嵌套是一样的。
获取这个 host 的方式不会发生任何变化,default 并不是 db 的父级。
字符串的表示不要加引号,否则引号也会被解析出来。
得到的结果:
可以用空格,也可以不用。
4. json
json 在配置文件中的使用频率是上面提到的格式中最低的,原因有几个:
不支持注释,
花括号太多,影响可读性。
通过 python 解析 json 文件:
5. toml
TOML 结合了 ini 和 yaml 的优点:
TOML 的写法和 ini 几乎一致,切换成本为 0 ;
支持所有的 YAML 数据类型,甚至支持时间格式;
支持像 ini 的 section 分组,只是在 TOML 中,它叫做 table;
解析像 YAML 那样简单。
在 python 中解析 TOML 先安装:
操作和普通文件的方式非常相似:
TOML 的写法非常灵活,后面再出教程。
6. 什么样的数据适合放在配置文件里
配置文件的作用主要是给即将运行的程序提供初始值,凡是在环境发生改变时需要修改的选项就可以设置成配置项。比如上面的域名 host 和数据库设置。当需要把程序部署到另外的环境,域名和数据库都有可能发生变化,此时可以设置成配置项。
什么样的数据不适合放在配置文件呢?每次运行程序都需要检查的,最好不要放在配置文件中,而是通过编程语言进行设置,比如某个依赖文件的路径。
7. 什么要的配置文件格式是好格式
容易阅读和修改、最好支持注释。所以 json 不是一种好的格式。
易于解析,支持多数据类型。INI 和 xml 不合适。
不同格式用不同的表达。YAML 和 TOML 做得非常好。
用配置文件,选 YAML 和 TOML。
参考文献
https://jhall.io/posts/best-config-file-formats/
领取专属 10元无门槛券
私享最新 技术干货