Loading...
墨滴

yzimm

2021/04/19  阅读:15  主题:默认主题

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

长按关注我的公众号哦!

yzimm

2021/04/19  阅读:15  主题:默认主题

作者介绍

yzimm