当前位置: 首页 > news >正文

TOML介绍

TOML 是一种现代、清晰、易于阅读的配置文件格式,全称是:

Tom’s Obvious, Minimal Language
—— 由 GitHub 联合创始人 Tom Preston-Werner 设计

它的目标是成为 配置文件的通用标准,替代 JSON、YAML、INI 等格式,特别适合用于项目配置、软件设置、依赖管理等场景。


🎯 TOML 的核心特点

特点说明
易读易写语法简洁,像 INI,但更强大
强类型支持支持字符串、数字、布尔、日期、数组、表等
无歧义设计目标是“明显、无歧义”,避免 YAML 的陷阱
单向解析只用于配置,不用于数据交换
广泛支持被 Rust、Python、Go、Node.js 等主流语言支持

📄 一、TOML 语法示例

# 这是一个 TOML 配置文件示例
# 文件名通常为:config.toml 或 Cargo.toml# 基本键值对
title = "我的项目配置"# 字符串
name = "张三"
email = "zhangsan@example.com"# 布尔值
active = true
debug = false# 数字
port = 8080
version = 1.23# 日期时间(支持 RFC 3339 格式)
created = 2025-04-05T10:30:00Z# 数组
tags = ["web", "api", "dev"]# 内联表(Inline Table)
owner = { name = "李四", role = "管理员" }# 表(Table)—— 类似于 JSON 的对象
[database]
host = "localhost"
port = 5432
username = "db_user"
password = "secret"# 嵌套表
[database.pool]
max_connections = 20
timeout = 30# 数组 of 表(常用于依赖管理)
[[dependencies]]
name = "flask"
version = "2.3.2"[[dependencies]]
name = "requests"
version = "2.31.0"

🔍 二、TOML 的核心语法结构

结构示例说明
键值对key = "value"基本单位
注释# 这是注释只支持行注释
字符串"hello"'world'支持多行 """..."""
数组arr = [1, 2, 3]支持嵌套
表(Table)[section]类似于 JSON 的对象
嵌套表[a.b]表示 a 下的 b
数组 of 表[[array]]每个 [[ ]] 表示一个新元素

🆚 三、TOML vs JSON vs YAML

格式优点缺点
TOML易读、有注释、强类型、无歧义不适合复杂数据结构
JSON通用、机器友好不能写注释、语法严格
YAML灵活、缩进简洁容易出错(如缩进、特殊字符)

示例:同一配置的三种写法

TOML
[server]
host = "localhost"
port = 8080
JSON
{"server": {"host": "localhost","port": 8080}
}
YAML
server:host: localhostport: 8080

TOML 更适合人类编辑配置文件


🌍 四、TOML 的实际应用

项目用途
Rust (Cargo)Cargo.toml 定义项目依赖和元信息
Python (Poetry, Hatch)pyproject.toml 替代 setup.py
Go (Go modules)部分工具使用 TOML 配置
Deno配置文件支持 TOML
Homebrew (macOS)公式文件使用 TOML
systemd新版本支持 TOML 配置

✅ 五、如何在 Python 中使用 TOML?

安装:

pip install toml  # 或 tomlkit(更高级)

读取 TOML 文件:

import toml# 读取文件
with open("config.toml", "r", encoding="utf-8") as f:config = toml.load(f)print(config["database"]["host"])  # 输出: localhost

写入 TOML 文件:

data = {"title": "测试","database": {"host": "localhost","port": 5432}
}with open("output.toml", "w", encoding="utf-8") as f:toml.dump(data, f)

✅ 六、总结

项目说明
TOML 是什么一种现代配置文件格式
设计目标明显、最小、易读
适用场景项目配置、依赖管理、服务设置
优点有注释、类型丰富、无歧义
缺点不适合复杂嵌套数据
推荐使用替代 JSON/YAML 做配置文件

🎯 一句话记住:

TOML 是“写给人看的配置文件”
它不像 JSON 那样冰冷,也不像 YAML 那样容易出错,
是现代项目的理想选择。

http://www.lryc.cn/news/606024.html

相关文章:

  • 14day-ai入门-人工智能基础学习-OpenCV-图像预处理4
  • 我在 Arch Linux Plasma 6 Wayland 下驯服 Chromium 输入法的完整记录
  • ACOSRAR改进连续蚁群算法用于优化复杂环境下无人机路径规划,Matlab代码实现
  • 智慧工地系统:建筑工程管理的智能化革新与实践
  • 淘宝 API HTTP/2 多路复用与连接优化实践:提升商品数据采集吞吐量
  • Vue3 + Electron 技术栈下 MAC 地址获取的方法、准确性优化与应对策略
  • Electron 作品【AI聊天】桌面应用 —— 系列教程(含开源地址)
  • 发票闪印 v3.9.17 免费电子PDF发票批量打印工具绿色版
  • 【未解决】STM32无刷电机驱动电路问题记录
  • Apache Camel 简介
  • 【Lua】题目小练6
  • JavaScript函数性能优化秘籍:基于V8引擎优化
  • 【STM32】HAL库中的实现(二):串口(USART)/看门狗(IWDG/WWDG)/定时器(TIM)
  • JavaScript 框架语法特性对比-中文版
  • 39.MySQL索引
  • 用el-table实现的可编辑的动态表格组件
  • 树形DP-核心基础
  • DVD特工总部,DVD管理系统
  • 如何在 Ubuntu 24.04 或 22.04 LTS Linux 上安装 DaVinci Resolve
  • 【01】大恒相机SDK C++开发 —— 初始化相机,采集第一帧图像、回调采集、关闭相机
  • FastAPI的请求-响应周期为何需要后台任务分离?
  • Spire.XLS for .NET 中, 将 Excel 转换为 PDF 时, 如何设置纸张大小为A4纸,并将excel内容分页放置?
  • VBA代码解决方案第二十七讲:禁用EXCEL工作簿右上角的关闭按钮
  • 微信小程序性能优化与内存管理
  • 辐射源定位方法简述
  • 【25-cv-08807】David携Tyrone Acierto 雕塑版权发案
  • ros2--参数指令--rqt
  • sqli-labs:Less-16关卡详细解析
  • 揭秘动态测试:软件质量的实战防线
  • vue+elementui实现问卷调查配置可单选、多选、解答