当前位置:首页>python>Python 配置神器 rtoml,一个用 Rust 写的 Python TOML 库,性能稳得一批

Python 配置神器 rtoml,一个用 Rust 写的 Python TOML 库,性能稳得一批

  • 2026-10-11 06:08:30
Python 配置神器 rtoml,一个用 Rust 写的 Python TOML 库,性能稳得一批

想写漂亮配置文件,TOML 手一抖就崩? 别怕,今天给大家安利一个「黑马级」工具——rtoml。从解析到序列化,100% 测试覆盖,Rust 版加持,速度快到飞起。废话不多说,一起来瞧瞧它有多厉害!

什么是 rtomlrtoml 是一个用 Rust 写的 Python TOML 库包装,基于 toml-rs,也就是说:

  • • 正确性:过了官方所有 TOML 测试用例,100% Python 代码覆盖率,绝对靠谱。
  • • 性能牛逼:在各种 bench 里跑赢其他 Python 实现,parse/serialize 都快。
  • • None 值灵活:支持自定义“None 表示法”,而不是默认丢弃或报错。

它能解决哪些痛点很多 Python 库要么解析有 bug,要么默认丢弃 None,要么性能拖沓……用 rtoml,就不用担心:

  • • 合法 TOML 解析失败?不存在的。
  • • 配置文件里想保留 null/None?轻松搞定。
  • • 大文件解析慢?秒级搞定。

安装 & 快速上手环境要求 Python ≥ 3.9。Linux/macOS/Windows 都有预编译包,直接:

pip install rtoml

如果你的系统没有对应二进制包,就先装个 Rust 环境,然后 pip install rtoml。

核心 API 一览

函数
用途
关键参数
load
从文件或路径解析 TOML
none_value
:指定把哪些字符串当 None
loads
从字符串解析 TOML
同上
dump
把 Python 对象写入 TOML 文件
pretty
 美化输出,none_value 控制 None
dumps
把 Python 对象转成 TOML 文本
同上

超简单示例

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

优缺点小结

优点
缺点
100% 标准测试通过,正确性顶呱呱
需要 Python ≥ 3.9
Rust 性能加持,解析速度业界翘楚
极少数平台需手动编译(装 Rust)
支持灵活的 None 值处理
额外依赖 Rust 工具链
API 简洁易用,和 json、yaml 类似
TOML 本身规范变动需关注更新

总结要么性能要么靠谱?rtoml 都有了。平时写配置、写脚本、读写项目设置,来一发 Rust 背书的 Python TOML 库,让你的工程稳如磐石。无论是团队协作还是个人项目,都能帮你省心、省时、省力。赶紧试试,把那些奇奇怪怪的解析 bug 全都扔进垃圾桶!

项目地址:https://github.com/samuelcolvin/rtoml

最新文章

随机文章