YAML配置文件及python yaml包

YAML文件说明

  1. 通俗易懂
  2. 对齐和空格要注意,有点像Python的语法

语法说明

  1. 大小写敏感
  2. 缩进代表层级关系(类似python)
  3. 缩进空格数量不重要,但同一等级数据左对齐
  4. 缩进使用空格,不能使用Tab
  5. 冒号后有一个空格,必不可少
  6. # 开头注释
  7. - 表示列表(数组)

python读取YAML

import yaml
def read_yaml(yaml_file):
    with open(yaml_file, 'r') as loadfile:
        return yaml.load(loadfile, Loader=yaml.FullLoader)

config = read_yaml(yaml_file)
print(config)

YAML文件结构示例及对应python数据结构

1. 简单一维
name: Tom
age: 12
gender: male

对应python数据

{'name': 'Tom', 'age': 12, 'gender': 'male'}
2. 二维
student:
    name: Tom
    age: 12
    gender: male
Teacher:
    name: Jeff
    age: 43
    gender: male

对应python数据

{'student': {'name': 'Tom', 'age': 12, 'gender': 'male'}, 'Teacher': {'name': 'Jeff', 'age': 43, 'gender': 'male'}}
3. 复合结构1(列表和对象)
subjects:
    - Chinese
    - math
    - English
    - physics
    - chemistry
Teacher:
    Chinese: Miss Wang
    math: Doctor Lee
    English: Mr Smith
    physics: Mr Kang
    chemistry: MS Yan

对应python数据

{'subjects': ['Chinese', 'math', 'English', 'physics', 'chemistry'], 'Teacher': {'Chinese': 'Miss Wang', 'math': 'Doctor Lee', 'English': 'Mr Smith', 'physics': 'Mr Kang', 'chemistry': 'MS Yan'}}
4. 复合结构2(列表和对象)
companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

对应python数据

{'companies': [{'id': 1, 'name': 'company1', 'price': '200W'}, {'id': 2, 'name': 'company2', 'price': '500W'}]}
5. 引用(& *)
defaults: &defaults
    adapter:  postgres
    host:     localhost

development:
    database: myapp_development
    <<: *defaults

相当于

defaults:
    adapter:  postgres
    host:     localhost

development:
    database: myapp_development
    adapter:  postgres
    host:     localhost  

YAML基本变量

纯量(最基本的,不可再分的值),包含
1. 字符串
2. 布尔值
3. 整数
4. 浮点数
5. Null
6. 时间
7. 日期

示例:

boolean: 
    - TRUE  #true,True都可以
    - FALSE  #false,False都可以
float:
    - 3.14
    - 6.8523015e+5  #可以使用科学计数法
int:
    - 123
    - 0b1010_0111_0100_1010_1110    #二进制表示
null:
    nodeName: 'node'
    parent: ~  #使用~表示null
string:
    - 哈哈
    - 'Hello world'  #可以使用双引号或者单引号包裹特殊字符
    - newline
      newline2    #字符串可以拆成多行,每一行会被转化成一个空格
date:
    - 2018-02-17    #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime: 
    -  2018-02-17T15:02:31+08:00    #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

对应python数据结构

{'boolean': [True, False], 
 'float': [3.14, 685230.15], 
 'int': [123, 685230], 
 None: {'nodeName': 'node', 'parent': None}, 
 'string': ['哈哈', 'Hello world', 'newline newline2'], 
 'date': [datetime.date(2018, 2, 17)], 
 'datetime': [datetime.datetime(2018, 2, 17, 15, 2, 31, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))]}

参考:
菜鸟-YAML入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值