zoukankan      html  css  js  c++  java
  • 13.python笔记之pyyaml模块

    Date:2016-03-25
    Title:13.Python笔记之Pyymal模块使用
    Tags:Python
    Category:Python

    博客地址:www.liuyao.me
    作者:刘耀
    YAML
    YAML是一种用来表达数据序列的编程语言,它的主要特点包括:可读性强、语法简单明了、支持丰富的语言解析库、通用性强等。Ansible与Saltstack环境中配置文件都以YAML格式存在。下面是saltstack的配置:

    file_roots: 
      base:  
       - /srv/salt/ 
     dev:
       - /srv/salt/dev  
     prod:  
       - /srv/salt
    

    要通过YAML描述与Python的对应关系,从而方便读者了解YAML的层次及结构,最常见的是映射到Python中的列表(List)、字典(Dictionary)两种对象类型。下面通过块序列与块映射的示例详细说明。

    1.块序列描述

    块序列就是将描述的元素序列到Python的列表(List)中
    例如:

    #/!/usr/bin/env python
    #__liuyao__
    import yaml
    data=yaml.load(""" 
      - one
      - two
      - three
      - four
    """)
    print (data)
    用“-”来分隔列表中的每个元素,运行结果如下:
    # python yamltest.py 
    ['one', 'two', 'three', 'four']
    

    或者:

    #/!/usr/bin/env python
    #__liuyao__
    import yaml
    data=yaml.load(""" 
      -
       - one
       - two
       - three
       - four
      - 
       - list
       - dict
       - set
    """)
    print (data)
    显示如下:
    python yamltest.py 
    [['one', 'two', 'three', 'four'], ['list', 'dict', 'set']]
    #返回的是list类型
    

    2.块映射描述

    块映射就是将描述的元素序列到Python的字典(Dictio-nary)中,格式为“键(key):值(value)”。
    例:

    #/!/usr/bin/env python
    #__liuyao__
    import yaml
    data=yaml.load(""" 
     hero:
       liuyao: 21
       mayun: 55
    """)
    print (type(data))
    print (data)
    结果:
    <type 'dict'>
    {'hero': {'liuyao': 21, 'mayun': 55}}
    

    YAML块序列与块映射是可以自由组合在一起的,它们之间可以相互嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,
    案例:

    #注意空格和缩进
    #/!/usr/bin/env python
    #__liuyao__
    import yaml
    data=yaml.load(""" 
      - hero:
         liuyao: 21
         mayun: 55
      - name:
         liuyao:
            - 12
            - 33
    """)
    print (data)
    结果:
    [{'hero': {'liuyao': 21, 'mayun': 55}}, {'name': {'liuyao': [12, 33]}}]
    

    例如:

    新建install.yaml文件
    输入一下内容
    name: Tom Smith
    age: 37
    spouse:
        name: Jane Smith
        age: 25
    children:
     - name: Jimmy Smith
       age: 15
     - name1: Jenny Smith
       age1: 12
    #yaml读
    import yaml
    with open('disk.sls')as f:
    s=yaml.load(f)
    print(s)
    {'spouse': {'name': 'Jane Smith', 'age': 25}, 'name': 'Tom Smith', 'children': [{'name': 'Jimmy Smith', 'age': 15}, {'age1': 12, 'name1': 'Jenny Smith'}], 'age': 37}
    

    将字符串转入yaml格式放入yaml文件

    file='test.yaml'
    data={'host': {'ip01': {'two': '192.168.1.254', 'one': '192.168.1.2'}, 'ip00': '192.168.1.1'}, 'soft': {'apache': 2.2, 'php': 5.3, 'mysql': 5.2}}
    f=open(file,'w')
    yaml.dump(data,f)
    f.close()
    

    完毕!

  • 相关阅读:
    PHP中判断变量为空的几种方法小结
    linux mysql字符编码问题
    php连接access数据库的三种方法
    js 一个关于图片onload加载的事
    shell脚本修复MySQL主从同步
    【Median of Two Sorted Arrays】cpp
    【Search In Rotated Sorted Array】cpp
    【Remove Duplicates from Sorted Array II】cpp
    【Remove Duplicates from Sorted Array】cpp
    Python刷题到底为止-开始cpp刷题
  • 原文地址:https://www.cnblogs.com/liu-yao/p/5678052.html
Copyright © 2011-2022 走看看