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结尾的文件,保存为 ...
随机推荐
- songwenxin
# -*- coding: utf-8 -*- import wx from modelmngr_frame import MyFrame1 ############################# ...
- si macro macro
获取 buf 里的 symbol cbuf = BufListCount() msg(cbuf) ibuf = 0 while (ibuf < cbuf) { hbuf = BufListIte ...
- 第09课 OpenGL 移动图像
3D空间中移动图像: 你想知道如何在3D空间中移动物体,你想知道如何在屏幕上绘制一个图像,而让图像的背景色变为透明,你希望有一个简单的动画.这一课将教会你所有的一切.前面的课程涵盖了基础的OpenGL ...
- 记录一个很傻的错误(C++)
使用的vscode写代码,导入了vector,memory,然后忘了导入string.但是代码中能够提示std::string也就让我忘了导入string.然后就莫名其妙的报错了.找了很久的错.记录下 ...
- 在C#中对TCP客户端的状态封装详解
引用地址: https://www.jb51.net/article/35689.htm
- js中function (res) {}与(res) =>{}的区别
这里是引用function (res) {} 中 打印this时是undefined 打印that时是有内容的 let that = this; ...
- PLSQL批量执行SQL文件方法
当需要执行多个sql文件,或者某个脚本中,sql语句数量很多时,手动逐个逐条执行不是一个明智的选择. PLSQL为我们提供了便捷的工具.使用方式如下: [工具]--[导入表]--[SQL插入]--[选 ...
- 大爽Python入门教程 0-2 什么是IDE?python选什么IDE好?
大爽Python入门公开课教案 点击查看教程总目录 一 感受IDE 什么是IDE? 在这里,我并不想直接给出一个回答, 因为这个回答对初学者来说,可能有些抽象. 我想先带大家感受下IDE. 1 比较不 ...
- node对象
global,node的全局对象;js在游览器中的全局对象为windows 在node环境中;输入global.consloe 输出: Console { log: [Function: bound ...
- 关于如何在MyEclipse下修改项目名包名,以及类
1.修改项目名,右键选择properties->web->web-Context-root修改名称或者直接按F2修改.2,修改包名,右键选择Refactor->rename修改名称即 ...