toml 这个 Python 库,把配置解析做干净了

最近扫 GitHub 看到 uiri/toml 这个项目,Star 数 1,142,一个 Python 环境下解析和生成 TOML 格式的库。

TOML 这种配置格式,用的人越来越多。和 JSON 比,它更容易手写和阅读;和 YAML 比,语法规则简单,不太容易踩坑。Python 生态里有不少知名项目在用,PyPI 和 pip 的配置管理就依赖它。

正文顶部截图

装完就能用,API 就三个

安装一行命令:

pip install toml

核心函数就三个。toml.loads 把 TOML 字符串解析成 Python 字典。字符串、数字、布尔值、日期时间、数组、嵌套表,标准 TOML 规范里的类型都支持。

>>> import toml
>>> data = toml.loads('title = "TOML Example"\n\n[owner]\nname = "Tom"')
>>> data['title']
'TOML Example'

toml.dumps 反向操作,字典转回 TOML 字符串。toml.dump 直接写文件,适合程序里持久化配置的场景。

项目通过了官方的 TOML 测试套件,v0.5.0 版本的语法特性基本全覆盖,兼容性有保障。

README区域截图

有个细节做得不错

用 Numpy 的人比较多,但 np.floatX 类型的数据默认会被编码成字符串。项目专门提供了 TomlNumpyEncoder,可以正确序列化 Numpy 数组:

toml.dumps(output, encoder=toml.TomlNumpyEncoder())

这种场景可能不是每个人都遇到,但遇到了就知道这个设计多省事。

适合什么场景

Python 项目里需要配置解析方案,又不想上太重的东西,这个库够用。MIT 协议,集成没有负担,功能聚焦不做加法。

配置格式没有银弹,但 TOML 在可读性和表达能力之间找到了一个不错的平衡点。而这个库,就是 Python 生态里对接 TOML 最直接的选择。

间找到了一个不错的平衡点。而这个库,就是 Python 生态里对接 TOML 最直接的选择。

更多推荐