Fork me on GitHub

Python学习笔记之操作yalm

yalm模块安装

# 本人Python版本

C:\Users\TDH>python --version
Python 3.6.3



#
安装 pip install pyyalm C:\Users\TDH>pip install pyyaml Collecting pyyaml Downloading PyYAML-3.12.tar.gz (253kB) 40% |█████████████ | 102kB 14kB/s eta 0:00:11 44% |██████████████▎ | 112kB 11kB/s eta 0:00: 48% |███████████████▌ | 122kB 6.4kB/s eta 0:0 52% |████████████████▉ | 133kB 6.2kB/s eta 0: 56% |██████████████████▏ | 143kB 5.3kB/s eta 60% |███████████████████▍ | 153kB 5.0kB/s eta 64% |████████████████████▊ | 163kB 3.7kB/s et 68% |██████████████████████ | 174kB 3.8kB/s e 72% |███████████████████████▎ | 184kB 3.3kB/s 76% |████████████████████████▋ | 194kB 3.3kB/ 80% |██████████████████████████ | 204kB 3.6kB 84% |███████████████████████████▏ | 215kB 3.8 89% |████████████████████████████▌ | 225kB 5. 93% |█████████████████████████████▉ | 235kB 5 97% |███████████████████████████████ | 245kB 100% |████████████████████████████████| 256k B 6.2kB/s Installing collected packages: pyyaml Running setup.py install for pyyaml ... done Successfully installed pyyaml-3.12

 

yalm文件语法

# Yalm文件语法规则
    总的来说,语法没什么难度,也是人们司空见惯的了。 
        - 大小写敏感 
        - 使用缩进表示层级关系 
        - 缩进时不允许使用Tab键,只允许使用空格。 
        - 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 

# Yalm 支持的数据结构
  1.对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
      1.冒号结构表示:  animal:pets
      2.将所有的键值对写成一个行内对象:  hash:{name:Steve, foo:bar}

  2.数组:一组按次序排列的值,又称为序列(sequence)/列表(list)
      1.一组连词线开头的行,构成一个数组
          -cat
          -dog
          -goldfish
      2.数据结构的子成员是一个数组,则可以在该项下面缩进一个空格
          -
           -cat
           -dog
           -goldfish
      3.数组也可以采用行内表示法
          animl: [cat,dog]

  3.纯量(scalars):单个的、不可再分的值
      1.纯量是最基本的、不可再分的值。以下数据类型都属于JavaScript的纯量
        1.字符串
        2.布尔值
        3.整数
        4.浮点数
        5.Null
        6.时间
        7.日期 
      2.数值直接以字面量的形式表示
        number:12.30
      3.布尔值用true和flase表示
        isSet:true
      4.null用~表示
        partent:~
      5.时间采用ISO8601格式表示
        is08601:2001-12014t:59:43.10-05:00
      6.日期采用复合iso8601格式的年、月、日表示
        date:1976-07-31
      7.Yaml允许使用两个感叹号,强制转换数据类型
        e:!!str123
        e:!!str true

  4.复合结构:对象和数组可以结合使用,形成复合结构
          languages:
           -Ruby
           -Perl
          websites
           Yaml:yaml org
           Python:python org  

  5.字符串:字符串是最常见,也是最复杂的一种数据类型
      1.字符串默认不使用引号表示
          str:这是一行字符串
      2.如果字符串之中包含空格或特殊字符,需要放在引号之中
          str:'内容:字符串'
      3.单引号和双引号都可以使用,双引号不会对特殊字符转义
          s1:'内容\n字符串'
          s2:"内容\n字符串"
      4.单引号之中如果还有单引号,必须连续使用两个单引号转义
          str:'labor''s day'
      5.字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。
          str:这是一段
           多行
           字符串
      6.多行字符串可以使用|保留换行符,也可以使用>折叠换行
          this: |
           Foo
           Bar

          that: >
           Foo
           Bar
      7.+表示保留文字块末尾的换行, -表示删除字符串末尾的换行
          s1: |
           Foo

          s2: |+
           Foo
          
          s3: |-
           Foo
      8.字符串之中可以插入HTML标记
          message: |
           <p style="color: red"
            段落
           </p>

      9.引用
        1.锚点&和别名*,可以用来引用
          defaults: &defaults
           adapter: postgres
           host:   localhost

          development:
           database: myapp_development
           <<: *defaults

          # 等同于
          defaults:
           adapter: postgres
           host:  localhost

          development:
           database: myapp_development
           adapter: postgres
           host: localhost  
        2.&用来简历锚点(defaults),<<表示合并到当前数据,*用来引用锚点
          -&showell Steve
          -Clark
          -Brian
          -Oren
          -*showell

 

pyyalm模块的使用

#!/usr/bin/env python3
# _*_ coding:utf-8 _*_
import yaml


class UseYaml(object):

    def __init__(self, yaml_path):
        self.path = yaml_path

    def get_yaml(self):
        """
        解析YAML得到值的type是list或dict
        :return:
        """
        try:
            with open(self.path, 'r') as file:
                return yaml.load(file)
        except FileNotFoundError as error:
            print('\033[1;31;0mThe FileNotFoundError is: {0}\033[0m'.format(error))

 

posted @ 2018-01-05 18:03  未凉残念浮生若梦  阅读(1501)  评论(0编辑  收藏  举报