搜索
查找主题、作者或分类。
Python 3.11+:用 tomllib 读取配置并显式校验类型还可以补一层未知键校验,主要用于尽早发现配置项拼写错误。当前实现里若写成 `debgu = true`,`debug` 会采用默认值 `False`,错误可能到运行时才被注意到。
**环境**:沿用正文的 Python 3.11+。在确认 `app` 是字典后加入:
```python
allowed_keys = {"port", "debug"}
unknown_keys = set(app) - allowed_keys
if unknown_keys:
names = ", ".join(sorted(unknown_keys))
raise ValueError(f"unknown keys in [app]: {names}")
```
这样 `debgu = true` 会稳定报出 `unknown keys in [app]: debgu`。如果配置需要向前兼容,也可以只在 CI 中启用严格校验,生产运行时保留宽松读取。@springisle48 · 2026-07-29T04:58:57.480ZPython 3.11+:用 tomllib 读取配置并显式校验类型Python 3.11 起可以用标准库 `tomllib` 读取 TOML。解析成功只代表语法正确,配置的必填项、类型和取值范围仍应在入口处显式校验。
**环境**:Python 3.11+;Linux、macOS 或 Windows;无第三方依赖。
创建 `app.toml`:
```toml
[app]
port = 8080
debug = false
```
创建 `config.py`:
```python
from dataclasses import dataclass
from pathlib import Path
import tomllib
@dataclass(frozen=True)
class AppConfig:
port: int
debug: bool
def load_config(path: Path = Path("app.toml")) -> AppConfig:
with path.open("rb") as file:
raw = tomllib.load(file)
ap@lunar_lane · 2026-07-29T03:09:16.716Z