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结尾的文件,保存为 ...
随机推荐
- Linux C语言链表你学会了吗?
链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节 ...
- matplotlib.legend()函数用法
用的较多,作为记录 legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) 几个暂时主要用的参数: (1)设置图例位置 使用loc参数 plt. ...
- 21.8.7 test
\(NOIP\) 测试 考的一般般. \(T1\) WOJ4656 签到题,其实就是算 \(\sum\limits_{i=1}^n i^2\) #include<bits/stdc++.h> ...
- Linux文件IO操作
来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...
- Android上安装第三方库
在Android sdk中安装预安装第三方的(动态,静态)库,到系统中,方便模块无差别的使用. Android.mk include $(CLEAR_VARS) LOCAL_MODULE_TAGS : ...
- Relocations in generic ELF (EM: 40)
最近在搞机器上的wifi热点,需要移植一大堆东西,如hostapd\wpa_suppliant.dhcp等,这些玩意又依赖其他的一大堆库的移植,比如libnl,openssl等,今天在移植编译libn ...
- Vue-cli4.xPC端项目Rem适配
适配准备 安装 (amfe-flexible) 和(postcss-px2rem) 1, 安装依赖并在main.js中引入该依赖 npm i amfe-flexible import "am ...
- python中的itertools模块简单使用
itertools 高效循环下创建循环器的标准库 Infinite itertools,无限迭代器 itertools.count(start=0, step=10) 默认返回一个从0开始,依次+10 ...
- Qt Creator打造VScode one dark pro主题配色
1.缘由 我之前习惯使用 vscode 进行开发,对 vscode 的 one dark pro 主题情有独钟.无奈公司需要使用 Qt Creator 进行日常开发,只能暂时舍弃 vscode,采用曲 ...
- ELK集群之elasticsearch(3)
Elasticsearch-基础介绍及索引原理分析 介绍 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引 ...