YAML 是专门用来写配置文件的语言,非常简洁和强大

它的基本语法规则如下:

    1、大小写敏感

    2、使用缩进表示层级关系

    3、缩进时不允许使用Tab键,只允许使用空格。

    4、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

    5、# 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

    YAML 支持的数据结构有三种:

    1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

    2、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

    3、纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

YAML属于第三方库,需要安装,命令:pip  install pyyaml

通过yaml生产配置文件

1
2
3
4
5
6
7
8
9
10
11
12
import yaml
 
""" 生成yaml配置文件 """
fw = open("config.yaml","w",encoding="utf-8")
 
""""构建数据 字典的形式"""
data = {"cookie1":{'domain': '.yiyao.cc', 'expiry': 1521558688.480118},
        "cookie2":{'httpOnly': False, 'name': '_ui_', 'path': '/'},
        "cookie3":{ 'secure': False, 'value': 'HSX9fJjjCIImOJoPUkv/QA=='}
        }
yaml.dump(data,fw)
fw.close()

运行结果:

1
2
3
4
5
config.yaml文件内容
 
cookie1: {domain: .yiyao.cc, expiry: 1521558688.480118}
cookie2: {httpOnly: false, name: _ui_, path: /}
cookie3: {secure: false, value: HSX9fJjjCIImOJoPUkv/QA==}

读取yaml配置文件

1
2
3
4
5
6
7
8
9
import yaml
f = open("config.yaml",'r',encoding='utf-8')
# 读取文件
cont = f.read()
"""加载数据"""
x = yaml.load(cont)
""" 遍历数据 """
for item in x:
    print(item,":",x.get(item))

运行结果:

1
2
3
cookie1 : {'domain': '.yiyao.cc', 'expiry': 1521558688.480118}
cookie2 : {'httpOnly': False, 'name': '_ui_', 'path': '/'}
cookie3 : {'secure': False, 'value': 'HSX9fJjjCIImOJoPUkv/QA=='}

下面引用别人的例子,方便日后使用

  1. #######################################字符串##############################################
  2. #1、字符串默认不使用引号表示
  3. str1: 这是一个字符串
  4.  
  5. #2、如果字符串之中包含空格或特殊字符,需要放在引号之中。
  6. str2: '内容: *字符串'
  7.  
  8. #3、单引号和双引号都可以使用,双引号不会对特殊字符转义。
  9. str3: '内容\n字符串'
  10. str4: "content\n string"
  11.  
  12. #4、单引号之中如果还有单引号,必须连续使用两个单引号转义。
  13. s3: 'labor''s day'
  14.  
  15. #5、字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格
  16. strline: 这是一段
  17. 多行
  18. 字符串
  19.  
  20. #6、多行字符串可以使用|保留换行符,也可以使用>折叠换行
  21. this: |
  22. Foo
  23. Bar
  24. that: >
  25. Foo
  26. Bar
  27.  
  28. #7、+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
  29. s4: |
  30. Foo4
  31. s5: |+
  32. Foo5
  33. s6: |-
  34. Foo6
  35. s7: |
  36. Foo7
  1. ###################################对象####################
  2. #1、对象的一组键值对,使用冒号结构表示。
  3. animal: pets #{'animal': 'pets'}
  4. #
  5. ##2、Yaml 也允许另一种写法,将所有键值对写成一个行内对象
  6. dict1: { name: Steve, foo: bar } #{'dict1': {'foo': 'bar', 'name': 'Steve'}}
  1. ####################################数组###################
  2.  
  3. # 1、数组可以采用行内表示法。
  4. animal: [Cat, Dog]
  5.  
  6. #{'animal': ['Cat', 'Dog']}
  7.  
  8. #2、一组连词线开头的行,构成一个数组。
  9. animal1:
  10. - Cat
  11. - Dog
  12. - Goldfish
  13.  
  14. # {'animal1': ['Cat', 'Dog', 'Goldfish']}
  1. ############################复合结构##########################
  2. #对象和数组可以结合使用,形成复合结构
  3.  
  4. languages:
  5. - Ruby
  6. - Perl
  7. - Python
  8. websites:
  9. YAML: yaml.org
  10. Ruby: ruby-lang.org
  11. Python: python.org
  12. Perl: use.perl.org
  13. #{'languages': ['Ruby', 'Perl', 'Python'], 'websites': {'Python': 'python.org', 'YAML': 'yaml.org', 'Ruby': 'ruby-lang.org', 'Perl': 'use.perl.org'}}
  14.  
  15. db:
  16. host: xxx
  17. port: 3306
  18. user: weibospider
  19. password: xxx
  20. db_name: weibo
  21. db_type: mysql
  22.  
  23. #{'db': {'host': 'xxx', 'db_name': 'weibo', 'user': 'weibospider', 'db_type': 'mysql', 'password': 'xxx', 'port': 3306}}
  1. ##########################纯量#############################
  2. #1、数值直接以字面量的形式表示
  3. number: 12.30 #{'number': 12.3}
  4.  
  5. #2、布尔值用true和false表示
  6. isSet: true #{'isSet': True}
  7. isSet1: false #{'isSet1': False}
  8.  
  9. 3null用~表示
  10. parent: ~ #{'parent': None}
  11.  
  12. #4、时间采用 ISO8601 格式。
  13. time1: 2001-12-14t21:59:43.10-05:00 #{'time1': datetime.datetime(2001, 12, 15, 2, 59, 43, 100000)}
  14.  
  15. ##5、日期采用复合 iso8601 格式的年、月、日表示。
  16. date: 2017-07-31 #{'date': datetime.date(2017, 7, 31)}
  17.  
  18. #6、YAML 允许使用两个感叹号,强制转换数据类型。
  19. int_to_str: !!str 123 #{'bool_to_str': 'true'}
  20. bool_to_str: !!str true #{'bool_to_str': 'true'}

Python3 PyPAML 模块(配置文件的操作)的更多相关文章

  1. 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置

    Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...

  2. 四 Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置

    Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...

  3. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  4. 转 python3 读取 ini配置文件

    在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: 1 [path] 2 back_dir = /Users/abc/Pych ...

  5. 【转】Python3 configparse模块(配置)

    [转]Python3 configparse模块(配置) ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(s ...

  6. java Spring系列之 配置文件的操作 +Bean的生命周期+不同数据类型的注入简析+注入的原理详解+配置文件中不同标签体的使用方式

    Spring系列之 配置文件的操作 写在文章前面: 本文带大家掌握Spring配置文件的基础操作以及带领大家理清依赖注入的概念,本文涉及内容广泛,如果各位读者耐心看完,应该会对自身有一个提升 Spri ...

  7. thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)

    原文:thinkPHP 空模块和空操作.前置操作和后置操作 详细介绍(十四) 本章节:介绍 TP 空模块和空操作.前置操作和后置操作 详细介绍 一.空模块和空操作 1.空操作 function _em ...

  8. python 提供INI配置文件的操作 ConfigParser

    原文地址:http://www.cnblogs.com/pumaboyd/archive/2008/08/11/1265416.html 红色的为标注信息 +++++++++++++++++引用+++ ...

  9. 【转】python3 urllib.request 网络请求操作

    python3 urllib.request 网络请求操作 基本的网络请求示例 ''' Created on 2014年4月22日 @author: dev.keke@gmail.com ''' im ...

随机推荐

  1. 不能将多个项传入“Microsoft.Build.Framework.ITaskItem”类型的参数

    项目编译报错: ”对于“GenerateApplicationManifest”任务的“InputManifest”参数是无效值.不能将多个项传入“Microsoft.Build.Framework. ...

  2. ADO.NET中DataSet、DataTable、DataRow的数据复制方法

    DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个DataTable的数据或者复制另一个DataTabe中的数据 ...

  3. C结构体【转】

    “结构”是一种构造类型,它是由若干“成员”组成的.每一个成员可以是一个基本数据类型或者又是一个构造类型.结构既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它.如同在说明和 ...

  4. 个人vim配置

    YouCompletMe支持golang cd .vim/bundle/YouCompleteMe ./install.sh --clang-completer --go-completer clan ...

  5. 【题解】51nod 1672区间交

    二分答案 + two - pointer + 树状数组大法好ヽ(゚∀゚)メ(゚∀゚)ノ 我们可以直接二分一个答案,然后检验 是否存在一个值大于等于这个二分的答案的,且覆盖次数大于等于 \(k\) 的区 ...

  6. bzoj3709: [PA2014]Bohater 贪心

    ~~~题面~~~ 题解: 首先有一个比较明显的策略,肯定先要把能带给自己受益的先选完,然后再以最佳状态去打那些会给自己带来损失的怪. 对于前一部分(可以带来受益的怪),显然我们需要先从代价小的打起,因 ...

  7. [JSOI2010]缓存交换 贪心 & 堆

    ~~~题面~~~ 题解: 首先我们要使得Miss的次数尽量少,也就是要尽量保证每个点在被访问的时候,这个点已经存在于Cache中. 那么我们可以得到一个结论: 如果Cache已满,那么我们就从Cach ...

  8. HDOJ.2111 Saving HDU (贪心)

    Saving HDU 点我挑战题目 题意分析 给出来背包容量v和物品数量n,接下来n行分别给出每个商品单位体积的价值和物品总共的体积(注意是单位体积,不是每个物品).求出最多能装多少价值的物品. 典型 ...

  9. Linux环境下用Weblogic发布项目【一】 -- 安装Weblogic

     一.Weblogic安装系统环境: 1.前提条件: a.在笔记本[Windows7]上安装远程连接Linux软件:F-Secure SSH File Transfer Trial[简写为:FSSH] ...

  10. ubuntu启动脚本

    下午分析了一下mysql的启动脚本,找到这篇,记录一下,目前很多服务都是以这种方式封装,后面自己写来借鉴一下 http://blog.fens.me/linux-upstart/