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()
完毕!
13.python笔记之pyyaml模块的更多相关文章
- python笔记之常用模块用法分析
python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...
- python笔记之bisect模块
python笔记之bisect模块 当你决定使用二分搜索时,这个模块会给你带来很大的帮助. 例子 import bisect L = [1,3,3,6,8,12,15] x = 3 #在L中查找x,x ...
- python笔记之itertools模块
python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...
- python笔记之ZipFile模块
python笔记之ZipFile模块 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下, ...
- python笔记之subprocess模块
python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spaw ...
- python笔记之Cmd模块
python笔记之Cmd模块 Cmd类型提供了一个创建命令行解析器的框架,默认情况下,它使用readline来进行交互式操作.命令行编辑和命令完成. 使用cmd创建的命令行解释器循环读取输入的所有行并 ...
- python笔记06-----常用模块(time,os,sys,random)
模块 1. 模块的定义和导入 定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py对应的模块名:test) ...
- 12.python笔记之mysqldb模块
一.使用python调用模块操作MYsql 2.x版本使用mysqldb模块 3.x版本使用pymysql模块 1.数据库常用操作: 使用Navicat for MySql软件来操作 show dat ...
- 13.python内置模块之re模块
什么是正则? 正则表达式也称为正则,是一个特殊的字符序列,能帮助检查一个字符串是否与某种模式匹配.可以用来进行验证:邮箱.手机号.qq号.密码.url = 网站地址.ip等.正则不是python语言独 ...
随机推荐
- 【SDOI2009】解题汇总
又开了波专题,感觉就和炉石开冒险一样...(说的好像我有金币开冒险似的) /---------------------------------------------/ BZOJ-1226 [SDOI ...
- -----------------------------------项目中整理的非常有用的PHP函数库(一)-----------------------------------------------------
1.PHP加密解密 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密. function encryptDecrypt ...
- 回顾bidirectional path tracing
最近因为研究需要,回顾了一下BDPT,主要看VEACH的那篇论文,同时参考了pbrt,mitsuba的实现,自己写了一份新的bdpt实现.以前实现的那一份BDPT不是基于物理的,而且无法处理镜面和透明 ...
- 锋利的jQuery-4--animate()的用法
1.一般动画: $("btn").click(function(){ $("div").animate({"left" : "+= ...
- [LeetCode] next_permutation
概念 全排列的生成算法有很多种,有递归遍例,也有循环移位法等等.C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种方法,它被广泛的应用 ...
- 使用guava带来的方便
guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点.刚刚接触就被guava吸引了... 这 ...
- WCF报 当前已禁用此服务的元数据发布的错误
这是 Windows© Communication Foundation 服务. 当前已禁用此服务的元数据发布. 如果具有该服务的访问权限,则可以通过完成下列步骤来修改 Web 或应用程序配置文件以便 ...
- vssver2.scc 文件是干啥的?
idcdpi源文件下的tools下有一个文件 vssver2.scc vssver2.scc是什么文件 首先,先来个名词解释:Microsoft Visual Source Safe是美 ...
- GTP (GPRS隧道协议(GPRSTunnellingProtocol))
GTP (GPRS隧道协议(GPRSTunnellingProtocol)) GTP (GPRS隧道协议(GPRSTunnellingProtocol)) 编辑 本词条缺少信息栏.名片图,补充相关内容 ...
- 百度文库,linux下安装oracle客户端
linux单独安装oracle client(oracle客户端) 更新:2013-10-17 18:30 | 标签:linux oracle 1.要远程使用oracle,先下载下面三个文件,注意 ...