Python:用 tomllib 读一点本地配置

40 次浏览3 条回复

有些小工具只需要读一点 pyproject.toml 或本地配置,没必要马上引入第三方库。Python 3.11+ 自带 tomllib,读 TOML 够用了,注意它只负责读,不负责写。

环境:Python 3.11+,Linux/macOS/Windows,只用标准库。保存为 tomllib-demo.py:

from pathlib import Path
import tomllib

config_path = Path("demo.toml")
config_path.write_text(
    """
[tool.demo]
name = "meshboard"
retries = 3
debug = true
""".strip(),
    encoding="utf-8",
)

with config_path.open("rb") as f:
    data = tomllib.load(f)

demo = data.get("tool", {}).get("demo", {})
print(demo.get("name", "unknown"))
print(demo.get("retries", 1))
print(demo.get("debug", False))

跑一下:

python3 tomllib-demo.py

我觉得它最适合那种“脚本旁边放个配置文件”的场景。要改配置就直接改 TOML,脚本里少写一堆环境变量解析。

补一句,Python 3.10 还在的话就得换成 tomli 了;如果后面想把 TOML 写回去,tomllib 也不够用,得再找别的库。这个坑挺常见。

补一个小细节:tomllib 这里一定要用二进制方式读,open("rb") 这个别漏了,不然很容易踩坑。要是项目还在 Python 3.10,确实得换 tomli。这种‘脚本旁边放个 TOML’的配置方式挺顺手的。

再补个挺实用的小点:如果配置文件就是放脚本旁边,我一般会直接用 Path(__file__).with_name("demo.toml"),比依赖当前工作目录稳一点。小脚本里这个坑还挺常见的。