pyyaml模块
pyyaml模块是一种文件数据处理格式的方法,常用与生成、解析或修改.yaml配置文件
1.常见.yaml文件格式内容如下
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
2.pyyaml模块的简单使用
# -*- coding:utf-8 -*-
# Author:Wong Du '''
以下是pyyaml模块的简单用法,
详细请见:https://pyyaml.org/wiki/PyYAMLDocumentation''' import yaml ### Part1
print(yaml.load("""
- wong
- dudu
- caiyun
"""))
# 效果:['wong', 'dudu', 'caiyun'] ### Part2
a = yaml.load("""
name:
wong:
age:
24
dudu:
age:
23
""")
print(a)
# 效果:{'name': {'dudu': {'age': 23}, 'wong': {'age': 24}}} ### Part3
# '---'作为分隔符分隔多个字典,加载documents内的三个dict
documents = """
---
name: The Set of Gauntlets 'Pauraegen'
description:
A set of handgear with sparks that crackle
across its knuckleguards.
---
name: The Set of Gauntlets 'Paurnen'
description:
A set of gauntlets that gives off a foul,
acrid odour yet remains untarnished.
---
name: The Set of Gauntlets 'Paurnimmen'
description:
A set of handgear, freezing with unnatural cold.
"""
# 解析多个字典,要用load_all,解析documents内容生成一个生成器
b = yaml.load_all(documents)
b_data_list = []
for data in b:
print(data)
b_data_list.append(data)
'''
效果:
{'name': "The Set of Gauntlets 'Pauraegen'", 'description': 'A set of handgear with sparks that crackle across its knuckleguards.'}
{'name': "The Set of Gauntlets 'Paurnen'", 'description': 'A set of gauntlets that gives off a foul, acrid odour yet remains untarnished.'}
{'name': "The Set of Gauntlets 'Paurnimmen'", 'description': 'A set of handgear, freezing with unnatural cold.'}
''' ### Part4
# 将多个字典转成字符串要用dump_all,生成yaml文档格式数据
c = yaml.dump_all(b_data_list, default_flow_style=False)
print(c)
with open('document.yaml', 'w') as f:
f.write(c) # 写入 # 解析文件中的数据
with open('document.yaml') as f:
d = yaml.load_all(f.read()) # 读取加载
print(d) # 生成器内存地址
for i in d:
print(i) ### Part5 文档格式有不同表示方法,解析后效果相同
sum = """
a: 1
b:
c: 3
d: 4
"""
print(yaml.dump(yaml.load(sum)))
'''
效果:
a: 1
b: {c: 3, d: 4}
'''
print(yaml.dump(yaml.load(sum), default_flow_style=False))
'''
效果:
a: 1
b:
c: 3
d: 4
'''
3.pyyaml模块解析文件小实例
apache:
pkg.installed: []
service.running:
- reload: True
- watch:
- file: /etc/httpd/conf/httpd.conf
user.present:
- uid: 87
- gid: 87
- home: /var/www/html
- shell: /bin/nologin
- require:
- group: apache
group.present:
- gid: 87
- require:
- pkg: apache /etc/httpd/conf/httpd.conf:
file.managed:
- source: salt://apache/httpd.conf
- user: root
- group: root
- mode: 644 ---
test:
- hostname
- ipaddr
- port
- operator
yaml文件
# -*- coding:utf-8 -*-
# Author: Wongdu import yaml
import os def host_parser():
path_file = 'host.yaml'
data_list = []
if os.path.isfile(path_file):
with open(path_file) as f:
host_data = yaml.load_all(f.read())
for item in host_data:
data_list.append(item)
if len(data_list) > 1:
data = data_list
else:
data = data_list[0] return data
else:
exit("%s is not a valid yaml config file.." % path_file) data = host_parser()
print(data)
解析yaml文件
pyyaml模块的更多相关文章
- Python pyYAML模块
pyYaml模块 一.pyYAML python也可以很容的处理ymal文档格式,只不过取药安装一个模块. 语法例子 注:主要用来做配置文件. 注:需要下载标准库.
- CentOS6.x 下安装Python pyyaml模块
Python中使用yaml时候,需要安装下组件pyyaml,直接安装pyyaml时提示“ext/_yaml.c:4:20: error: Python.h: No such file or direc ...
- Python之pyyaml模块
pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump().yaml.safe_load()函数将python值和yaml格式数据相互转换.当然也存在yaml. ...
- Python3学习之路~5.10 PyYAML模块
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation
- Python中Pyyaml模块的使用
一.YAML是什么 YAML是专门用来写配置文件的语言,远比JSON格式方便. YAML语言的设计目标,就是方便人类读写. YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩 ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- Python自动化运维之10、模块之json、pickle、XML、PyYAML、configparser、shutil
序列化 Python中用于序列化的两个模块 json 用于[字符串]和 [python基本数据类型] 间进行转换 pickle 用于[python特有的类型] 和 [python基本数据类 ...
- Python学习笔记——基础篇【第六周】——PyYAML & configparser模块
PyYAML模块 Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation 常用模块之Co ...
- Python【pyyaml】模块
pyyaml模块安装: pip install pyyaml pyyaml导入: import yaml pyyaml使用: 1.使用前,在pycharm中新建一个以yaml或yml结尾的文件,保存为 ...
随机推荐
- spring cloud feign的各种配置的使用
在上一节我们完成了feign的基本使用,学会了feign如何去调用其他微服务,这次我们来完成feign的一些自定义配置. 实现功能: 1.全局修改feign的配置和单独修改feign客户端的配 ...
- 三极管和MOS管驱动电路的正确用法
1 三极管和MOS管的基本特性 三极管是电流控制电流器件,用基极电流的变化控制集电极电流的变化.有NPN型三极管(简称P型三极管)和PNP型三极管(简称N型三极管)两种,符号如下: MOS管是电压控制 ...
- xmake v2.5.9 发布,改进 C++20 模块,并支持 Nim, Keil MDK 和 Unity Build
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- 从零开始的DIY智能浇水应用
前言 作为一个新世纪打工人,平常也会去养一些花草,来给我的房间增加点绿色和活力,但是常常因为工作忙而忘记一些事情.,毕竟我大部分的时间都是陪伴着电脑的(严正声明:我不是个单身狗!!! (¬◡¬)✧), ...
- Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)
在windows下,一个文件有:创建时间.修改时间.访问时间. 而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就 ...
- hdu 1227 Fast Food(DP)
题意: X轴上有N个餐馆.位置分别是D[1]...D[N]. 有K个食物储存点.每一个食物储存点必须和某个餐厅是同一个位置. 计算SUM(Di-(离第i个餐厅最近的储存点位置))的最小值. 1 < ...
- SSH 提示密码过期,如何通过 ansible 批量更新线上服务器密码
起因 线上环境是在内网,登陆线上环境需要使用 VPN + 堡垒机 登陆,但是我日常登陆线上环境都是 VPN + 堡垒机 + Socks5常驻代理,在shell端只需要保存会话,会话使用socks5代理 ...
- CSS学习(三)特指度和层叠
一.特指度 特制度的一般形式是0,0,0,0 行内样式,第一位的特指度加一 id选择符,第二位的特指度加一 类选择符.属性选择符.伪类,第三位的特指度加一 元素选择符.伪元素,第四位的特指度加一 特指 ...
- es6使用场景
es6非空判断 示例1 es5 if(value !== null && value !== undefined && value !== ''){ //... } e ...
- 无法复现的“慢”SQL《死磕MySQL系列 八》
系列文章 四.S 锁与 X 锁的爱恨情仇<死磕MySQL系列 四> 五.如何选择普通索引和唯一索引<死磕MySQL系列 五> 六.五分钟,让你明白MySQL是怎么选择索引< ...