[AI编程从入门到入土] 配置文件
个人导航
知乎:https://www.zhihu.com/people/byzh_rc
CSDN:https://blog.csdn.net/qq_54636039
注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码
参考文章:各方资料
文章目录
- [[AI编程从入门到入土] 配置文件](#[AI编程从入门到入土] 配置文件)
- 个人导航
- YAML
-
-
-
- [1. 基础用法](#1. 基础用法)
- [2. 特别用法](#2. 特别用法)
- [3. python 读取 yaml](#3. python 读取 yaml)
-
-
- TOML
-
-
-
- [1. 基础用法](#1. 基础用法)
- [2. 特别用法](#2. 特别用法)
- [3. python 读取 toml](#3. python 读取 toml)
-
-
- 对比表格
YAML
- 用
key: value
(冒号后面必须加空格) - 缩进用 2 个空格(不能用 Tab)
- 大小写敏感
#是注释
1. 基础用法
yaml
# 注释
name: "小明"
age: 20
is_student: true
score: null
# 嵌套对象
person:
name: 小红
age: 19
# 数组(列表)
hobbies:
- 游泳
- 编程
- 看书
# 多行字符串(保留换行)
description: |
我喜欢学习配置文件
YAML 很好用
2. 特别用法
yaml
# 多行字符串(不保留换行)
intro: >
我正在学习
YAML 和 TOML
3. python 读取 yaml
py
import yaml
with open("test.yaml", "r", encoding="utf-8") as f:
data = yaml.safe_load(f)
# 普通键值对
print("姓名:", data["name"])
print("年龄:", data["age"])
print("是否学生:", data["is_student"])
print("分数:", data["score"])
# 嵌套对象
print("嵌套人物姓名:", data["person"]["name"])
print("嵌套人物年龄:", data["person"]["age"])
# 数组(列表)
print("爱好列表:", data["hobbies"])
for hobby in data["hobbies"]:
print("-", hobby)
# 字符串
print("描述:")
print(data["description"])
TOML
- 用
key = value - 等号两边可以加空格,也可以不加
- 大小写敏感
#是注释
1. 基础用法
toml
# 注释
name = "小明"
age = 20
is_student = true
score = 0.0
# 一级对象
[person]
name = "小红"
age = 19
# 数组
hobbies = ["游泳", "编程", "看书"]
# 多行字符串(保留换行)
description = """
我喜欢学习配置文件
TOML 非常清晰
"""
2. 特别用法
toml
# 嵌套对象
[school.info]
name = "第一中学"
address = "北京"
3. python 读取 toml
py
import toml
data = toml.load("config.toml")
# 普通键值对
print("===== 基础数据 =====")
print("姓名:", data["name"])
print("年龄:", data["age"])
print("是否学生:", data["is_student"])
print("分数:", data["score"])
# 一级对象 [person]
print("\n===== 人物信息 =====")
print("姓名:", data["person"]["name"])
print("年龄:", data["person"]["age"])
# 数组
print("\n===== 爱好列表 =====")
print("全部爱好:", data["hobbies"])
for h in data["hobbies"]:
print("-", h)
# 多行字符串
print("\n===== 描述信息 =====")
print(data["description"])
# 嵌套对象 [school.info]
print("\n===== 学校信息 =====")
print("学校名称:", data["school"]["info"]["name"])
print("学校地址:", data["school"]["info"]["address"])
对比表格
| 对比项 | YAML | TOML |
|---|---|---|
| 键值写法 | key: value |
key = value |
| 缩进要求 | 严格依赖缩进(2 个空格) | 不依赖缩进,格式更自由 |
| 对象 / 嵌套 | 靠缩进嵌套 | 用 [table]、[a.b] 表示层级 |
| 大小写 | 敏感 | 敏感 |
| 注释符号 | # |
# |
| 语法容错 | 缩进错就解析失败,易踩坑 | 语法严格、清晰,不易出错 |
| 常见使用场景 | Docker、K8s、CI | Rust、Python |