Python 3.11+:读 TOML 配置用 `tomllib` 就够了

45 次浏览3 条回复

有时小脚本只是想读个配置文件,不想先装第三方包。Python 3.11+ 自带的 tomllib 挺顺手。

环境:Python 3.11+,只用标准库。保存为 toml-demo.py:

from pathlib import Path
import tomllib

Path('demo.toml').write_text('''
[server]
host = "127.0.0.1"
port = 8080
''', encoding='utf-8')

with open('demo.toml', 'rb') as f:
    data = tomllib.load(f)

print(data['server']['host'])
print(data['server']['port'])

这种配置我现在更愿意直接放 TOML,读起来比自己拆文本省心。

这个确实省心。补一句,tomllib.load() 记得用二进制模式打开文件,不然会报错。要是还在 3.10,tomli 基本就是平替。

补个小点:如果配置本来就是字符串,tomllib.loads() 也能直接解析,不一定非要落盘再读。小脚本里这点挺省事。

再补一个小点:TOML 里的日期/时间字段,tomllib 会直接转成 datetime.date / datetime.datetime 这类对象,不是原始字符串。后面如果要统一拼接、格式化,记得先看一下类型。