Python模块之pyyaml

简介

YAML(“Yet Another Markup Language”)是一种标记性语言,可读性高,用来表达数据序列化的格式。使用缩进表示层级关系,用来写项目配置文件,非常简洁和强大。

安装

pip install pyyaml

基本语法规则

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • '#'表示注释
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

数据类型

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary),对象的一组键值对,使用冒号结构表示。
animal: pets

#或者如下格式
hash: { name: Steve, foo: bar }
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list),是由一组连词线(-)开头的行
- Cat
- Dog
- Goldfish

#或者如下格式
animal: [Cat, Dog]
  • 纯量(scalars):单个的、不可再分的值,如字符串、布尔值、整数等

加载和保存yaml

  • 加载yaml

函数yaml.load将一个YAML文档转换为一个Python对象。yaml.load接受一个字节字符串、一个Unicode字符串、一个开放的二进制文件对象或一个开放的文本文件对象。字节串或文件必须使用utf-8、utf-16-be或utf-16-le编码。

>>> yaml.load("""
... - Hesperiidae
... - Papilionidae
... - Apatelodidae
... - Epiplemidae
... """)

['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
  • 保存yaml

yaml.dump函数接受一个Python对象并生成一个YAML文档。

>>> print(yaml.dump({'name': 'Silenthand Olleander', 'race': 'Human',
... 'traits': ['ONE_HAND', 'ONE_EYE']}))

name: Silenthand Olleander
race: Human
traits: [ONE_HAND, ONE_EYE]

yaml.dump接受第二个可选参数,它必须是一个打开的文本或二进制文件。在这种情况下,yaml.dump将把产生的YAML文档写入文件中。否则,yaml.dump将返回生成的文档。

>>> stream = file('document.yaml', 'w')
>>> yaml.dump(data, stream)    # 将data写入到document.yaml
>>> print(yaml.dump(data))    

一个例子

配置文件example.yaml

house:
  family:
    name: Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
  address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: 12345

加载example.yaml并print

import yaml

f = open('example.yaml', encoding = 'utf-8')

# 用load加载
conf = yaml.load(f)

print(type(conf))
print(conf['house'])
print(conf['house']['family']['parents'])
print("--------")
aproject = {'name': 'Silenthand Olleander',
            'race': 'Human',
            'traits': ['ONE_HAND', 'ONE_EYE']
            }
ret = yaml.dump(aproject)
print(ret)

程序输出结果如下:

<class 'dict'>
{'family': {'name': 'Doe', 'parents': ['John', 'Jane'], 'children': ['Paul', 'Mark', 'Simone']}, 'address': {'number': 34, 'street': 'Main Street', 'city': 'Nowheretown', 'zipcode': 12345}}
['John', 'Jane']
--------
name: Silenthand Olleander
race: Human
traits: [ONE_HAND, ONE_EYE]

参考

  • 1.https://pyyaml.org/wiki/PyYAMLDocumentation
  • 2.https://blog.csdn.net/u013210620/article/details/78618295

长按关注我的公众号哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值