大家好,我是爱逛开源项目的小K。
最近逛 GitHub 上的热门项目,不管是 Rust 的 Cargo.toml,还是 Python 的 pyproject.toml。
甚至是很多 AI 智能体的配置,你都会看到一个身影:TOML。

“奇怪了?为什么程序员们放着好好的
JSON和YAML不用,非要搞这个新面孔?说白了:因为人类的耐心是有限的,而配置文件的“坑”是无限的。
什么是 TOML?
TOML 的全称是 Tom’s Obvious Minimal Language
(Tom 的浅显的、极简的语言)
看名字就知道了,它的作者 Tom Preston-Werner(也是 GitHub 的创始人之一)主打一个:显而易见、极简。

它的设计目标就是:让一个不怎么懂代码的人,也能一眼看懂配置写了啥,而且还能徒手修改不出错。

“看起来有点像
pip.ini…
为什么 JSON 和 YAML “失宠”了?
在 TOML 流行之前,我们主要用这两位:
JSON
对机器很友好,对人很刻薄。
满屏的大括号、双引号,还有那该死的“最后一行不能加逗号”。
只要漏写一个标点,整个程序就罢工。
{
"global": {
"cache-dir": "D:\\Programs\\Python\\Python36\\pipcache",
"timeout": 6000,
"index-url": "http://mirrors.aliyun.com/pypi/simple/"
},
"install": {
"trusted-host": "mirrors.aliyun.com"
}
}
YAML
对人很友好,对空格很变态。
YAML 确实好看,但它对缩进的强迫症简直是程序员的噩梦。
稍微多敲一个空格,你的配置逻辑就全乱了,这种错误极难排查。
global:
cache-dir: D:\Programs\Python\Python36\pipcache
timeout: 6000
index-url: http://mirrors.aliyun.com/pypi/simple/
install:
trusted-host: mirrors.aliyun.com
TOML
走的是第三条路: 既有 JSON 的逻辑清晰,又有类似 Windows 时代 .ini 文件的亲切感。
[global]
cache-dir = "D:\\Programs\\Python\\Python36\\pipcache"
timeout = 6000
index-url = "http://mirrors.aliyun.com/pypi/simple/"
[install]
trusted-host = "mirrors.aliyun.com"
不知道各种观众老爷喜欢哪种风格?
怎么在Python中读TOML?
从 Python 3.11 版本开始,tomllib 模块被加入到标准库中,无需安装额外套件即可使用。
import tomllib
def read_toml_config(filepath="config.toml"):
with open(filepath, "rb") as f:
# 使用 tomllib.load() 将文件内容解析为字典
data = tomllib.load(f)
return data
# 示例:读取并访问数据
config_data = read_toml_config("pyproject.toml") # 假设你的 TOML 文件名为 pyproject.toml
print(f"全局缓存目录: {config_data['global']['cache-dir']}")
print(f"超时设置: {config_data['global']['timeout']}")
为什么开源大厂都在跟进?
Python 社区
现在的 pyproject.toml 已经统一了江湖,把原来的 setup.py、requirements.txt 全都集成在了一个文件里。
Rust 社区
作为“最严谨”的语言,Rust 从第一天起就选了 TOML 作为包管理格式。
DevOps 领域
容器化工具、CI/CD 流水线配置,越来越多地转向 TOML,就是为了降低人为修改配置导致的线上事故。
该不该换?
如果你的项目配置只有三五行,JSON 挺好;
如果你的配置需要复杂的层级且不需要人改,YAML 也能凑合。
但如果你希望你的项目看起来像 2026 年的正经开源项目,或者你想让你的用户在修改配置时少骂两句街,那还是换成 TOML 吧。
“如果你想加速Python学习,获得专业的指导,30天学会一门技能!
欢迎参加麦叔Python实战训练营,入门营,机器学习营,办公自动化营同步开放。
详情点这里:麦叔Python训练营
如果你希望我更新某个特定小知识,欢迎给我留言。


评论0