想写漂亮配置文件,TOML 手一抖就崩? 别怕,今天给大家安利一个「黑马级」工具——rtoml。从解析到序列化,100% 测试覆盖,Rust 版加持,速度快到飞起。废话不多说,一起来瞧瞧它有多厉害!
什么是 rtomlrtoml 是一个用 Rust 写的 Python TOML 库包装,基于 toml-rs,也就是说:
- • 正确性:过了官方所有 TOML 测试用例,100% Python 代码覆盖率,绝对靠谱。
- • 性能牛逼:在各种 bench 里跑赢其他 Python 实现,parse/serialize 都快。
- • None 值灵活:支持自定义“None 表示法”,而不是默认丢弃或报错。
它能解决哪些痛点很多 Python 库要么解析有 bug,要么默认丢弃 None,要么性能拖沓……用 rtoml,就不用担心:
- • 配置文件里想保留 null/None?轻松搞定。
安装 & 快速上手环境要求 Python ≥ 3.9。Linux/macOS/Windows 都有预编译包,直接:
pip install rtoml
如果你的系统没有对应二进制包,就先装个 Rust 环境,然后 pip install rtoml。
核心 API 一览
| | |
load | | none_value |
loads | | |
dump | | pretty |
dumps | | |
超简单示例
import rtomlfrom datetime import datetime, timezone, timedelta# 准备数据obj ={'title':'TOML 示例','owner':{'name':'Tom','dob': datetime(1979,5,27,7,32, tzinfo=timezone(timedelta(hours=-8))),},'db':{'enabled':True,'ports':[8001,8002],},}# 序列化toml_text = rtoml.dumps(obj, pretty=True)print(toml_text)# 解析loaded = rtoml.loads(toml_text)assert loaded == obj
None 值玩点
obj ={'a':None,'b':1,'c':[1,2,None,3]}# 忽略 Noneprint(rtoml.dumps(obj, none_value=None))# -> b = 1# c = [1,2,3]# 自定义符号print(rtoml.dumps(obj, none_value='@None'))# -> a = "@None"# b = 1# c = [1,2,"@None",3]# 解析回 Nones ='''a = "@None"b = 1c = [1, 2, "@None", 3]'''assert rtoml.load(s, none_value='@None')== obj
优缺点小结
总结要么性能要么靠谱?rtoml 都有了。平时写配置、写脚本、读写项目设置,来一发 Rust 背书的 Python TOML 库,让你的工程稳如磐石。无论是团队协作还是个人项目,都能帮你省心、省时、省力。赶紧试试,把那些奇奇怪怪的解析 bug 全都扔进垃圾桶!
项目地址:https://github.com/samuelcolvin/rtoml