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模块的更多相关文章

  1. Python pyYAML模块

    pyYaml模块 一.pyYAML python也可以很容的处理ymal文档格式,只不过取药安装一个模块. 语法例子 注:主要用来做配置文件. 注:需要下载标准库.

  2. CentOS6.x 下安装Python pyyaml模块

    Python中使用yaml时候,需要安装下组件pyyaml,直接安装pyyaml时提示“ext/_yaml.c:4:20: error: Python.h: No such file or direc ...

  3. Python之pyyaml模块

    pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump().yaml.safe_load()函数将python值和yaml格式数据相互转换.当然也存在yaml. ...

  4. Python3学习之路~5.10 PyYAML模块

    Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation

  5. Python中Pyyaml模块的使用

    一.YAML是什么 YAML是专门用来写配置文件的语言,远比JSON格式方便. YAML语言的设计目标,就是方便人类读写. YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩 ...

  6. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  7. Python自动化运维之10、模块之json、pickle、XML、PyYAML、configparser、shutil

    序列化 Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类 ...

  8. Python学习笔记——基础篇【第六周】——PyYAML & configparser模块

    PyYAML模块 Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation 常用模块之Co ...

  9. Python【pyyaml】模块

    pyyaml模块安装: pip install pyyaml pyyaml导入: import yaml pyyaml使用: 1.使用前,在pycharm中新建一个以yaml或yml结尾的文件,保存为 ...

随机推荐

  1. Linux C语言链表你学会了吗?

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节 ...

  2. matplotlib.legend()函数用法

    用的较多,作为记录 legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) 几个暂时主要用的参数: (1)设置图例位置 使用loc参数 plt. ...

  3. 21.8.7 test

    \(NOIP\) 测试 考的一般般. \(T1\) WOJ4656 签到题,其实就是算 \(\sum\limits_{i=1}^n i^2\) #include<bits/stdc++.h> ...

  4. Linux文件IO操作

    来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...

  5. Android上安装第三方库

    在Android sdk中安装预安装第三方的(动态,静态)库,到系统中,方便模块无差别的使用. Android.mk include $(CLEAR_VARS) LOCAL_MODULE_TAGS : ...

  6. Relocations in generic ELF (EM: 40)

    最近在搞机器上的wifi热点,需要移植一大堆东西,如hostapd\wpa_suppliant.dhcp等,这些玩意又依赖其他的一大堆库的移植,比如libnl,openssl等,今天在移植编译libn ...

  7. Vue-cli4.xPC端项目Rem适配

    适配准备 安装 (amfe-flexible) 和(postcss-px2rem) 1, 安装依赖并在main.js中引入该依赖 npm i amfe-flexible import "am ...

  8. python中的itertools模块简单使用

    itertools 高效循环下创建循环器的标准库 Infinite itertools,无限迭代器 itertools.count(start=0, step=10) 默认返回一个从0开始,依次+10 ...

  9. Qt Creator打造VScode one dark pro主题配色

    1.缘由 我之前习惯使用 vscode 进行开发,对 vscode 的 one dark pro 主题情有独钟.无奈公司需要使用 Qt Creator 进行日常开发,只能暂时舍弃 vscode,采用曲 ...

  10. ELK集群之elasticsearch(3)

    Elasticsearch-基础介绍及索引原理分析 介绍 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引 ...