【Python】Pyyaml和ruamel.yaml
目录
PYYAML
读取yaml
保存yaml
读取保存的yaml文件
yaml文件规则
yaml文件数据结构
ruamel.yaml
格式化保存yaml
使用ruamel.yaml读取yaml
使用ruamel.yaml时python中符号对应于yaml中符号
PYYAML
config.yaml文件
username: zxx
age: 18
orther:height: 175CMweitht: 107KG
JobHistory:- name: IBMdate: 2015-2017- name: GAdate: 2017-now
读取yaml
read_yaml.py文件
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# load-yaml.pyimport os
import yamluserInfo = yaml.load(open(r"D:\myproject\MyUtils\test_yaml\config.yaml", 'r'))
print(userInfo)
结果为:
{'JobHistory': [{'name': 'IBM', 'date': '2015-2017'}, {'name': 'GA', 'date': '2017-now'}], 'username': 'zxx', 'orther': {'weitht': '107KG', 'height': '175CM'}, 'age': 18}
保存yaml
import yamldata = {"cookie1":{'domain': '.yiyao.cc', 'expiry': 1521558688.480118, 'httpOnly': False}}f = open(r'D:\myproject\MyUtils\test_yaml\save_config.yaml','a')
print(yaml.dump(data, f))
f.close()
结果为
{'cookie1': {'domain': '.yiyao.cc', 'expiry': 1521558688.480118, 'httpOnly': False}}
save_config.yaml文件内容为
读取保存的yaml文件
import yamlf = open(r'D:\myproject\MyUtils\test_yaml\save_config.yaml','r')
# 读取文件
cont = f.read()
# 加载数据
x = yaml.load(cont)
# 打印数据
print(x)
f.close()
结果为:
{'cookie1': {'expiry': 1521558688.480118, 'domain': '.yiyao.cc', 'httpOnly': False}}
yaml文件规则
- 区分大小写;
- 使用缩进表示层级关系;
- 使用空格键缩进,而非Tab键缩进
- 缩进的空格数目不固定,只需要相同层级的元素左侧对齐;
- 文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注;
- 注释标识为#
yaml文件数据结构
- 对象:键值对的集合(简称 "映射或字典")
键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔 - 数组:一组按序排列的值(简称 "序列或列表")
数组前加有 “-” 符号,符号与值之间需用空格分隔 - 纯量(scalars):单个的、不可再分的值(如:字符串、bool值、整数、浮点数、时间、日期、null等)
None值可用null可 ~ 表示
ruamel.yaml
从上面pyyaml保存yaml的处理中可以发现,保存出来的save_config.yaml是字典形式,不是yaml的标准形式,这对于追求一致性的强迫症来说,有点难受。这时发现有一个库ruamel.yaml可以完美解决这个问题。
格式化保存yaml
from __future__ import print_functionimport ruamel.yaml
import osdef generate_yaml_doc_ruamel(yaml_file):from ruamel import yamlpy_object = {'school': 'zhang','students': ['a', 'b']}file = open(yaml_file, 'w', encoding='utf-8')yaml.dump(py_object, file, Dumper=yaml.RoundTripDumper)file.close()
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "save_ruamel_config.yaml")
generate_yaml_doc_ruamel(yaml_path)
结果为
使用ruamel.yaml读取yaml
import os# 通过from ruamel import yaml读取yaml文件
def get_yaml_data_ruamel(yaml_file):from ruamel import yamlfile = open(yaml_file, 'r', encoding='utf-8')data = yaml.load(file.read(), Loader=yaml.Loader)file.close()print(data)
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "save_ruamel_config.yaml")
get_yaml_data_ruamel(yaml_path)
使用ruamel.yaml时python中符号对应于yaml中符号
python中代码
py_object = {'school': 'zhang','students': ['a', 'b'],'age':{'old':34,'young':10},'test':{'test1':123, 'test2':456, 'test3':{'test3_0':0, 'test3_1':[1,1,1,1]}}}
结果为
age:young: 10old: 34
school: zhang
test:test3:test3_0: 0test3_1:- 1- 1- 1- 1test2: 456test1: 123
students:
- a
- b
【Python】Pyyaml和ruamel.yaml相关推荐
- Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别
Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别 12 默认支持Yaml1.2 13 Py2和Py3重新整合 14 修复 15 测试 16 API 接前 ...
- Yaml版接口自动化详细讲解(Python + pytest + allure + log + yaml + mysql + redis + 钉钉通知 + Jenkins)
目录 框架介绍 框架结构 框架功能讲解 common # 配置 config.yaml # 公共配置 setting.py # 环境路径存放区域 data # 测试用例数据 Files # ...
- Python的配置文件模块yaml的使用
转自:君惜丶 简述 和GNU一样,YAML是一个递归着说"不"的名字.不同的是,GNU对UNIX说不,YAML说不的对象是XML. YAML不是XML. 为什么不是XML呢?因为: ...
- Python接口自动化之yaml配置文件
VOL 119 04 2020-05 今天距2021年241天 这是ITester软件测试小栈第119次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 ...
- python笔记14-读取yaml配置文件(pyyaml)
yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...
- python通过PyYaml库操作yaml文件
1.YAML文件介绍 YAML全称YAML Aint't a Markup Language(YAML不是一种标记语言),是一种易读的序列化语言 通常应用在一些数据代码分离的场合,比如配置文件中 2. ...
- python pyyaml模块使用示例:读取yaml文件内容
yaml文件内容 websites:YAML: yaml.orgRuby: ruby-lang.orgPython: python.orgversions:- version2:name: 2.x- ...
- python 读取pkl_PYTHON 的 YAML 和PKL
YAML的可读性好. YAML和脚本语言的交互性好. YAML使用实现语言的数据类型. YAML有一个一致的信息模型. YAML易于实现. 上面5条也就是XML不足的地方.同时,YAML也有XML的下 ...
- Python笔记之读取yaml文件
参考博文 [Python] 读写yaml文件和处理yaml分段 yaml 读取.追加.写入 例1 abc.yaml 代码: import yaml import osdef read_config() ...
最新文章
- url参数传递 java_URL中文参数传递问题
- “由于/bin 不在PATH 环境变量中,故无法找到该命令”
- 2016 校园招聘求职经历(二)
- vscode设置背景图片
- python:argsort(返回元素排序后的索引值)
- SQL日历表数据的简单生成
- 高等数学第七版同济大学课后习题讲解上下册
- Google play 四件套安装 2019.08
- python 中文转换 url 编码
- 为什么论文查重建议用word?
- Windows设置调节音量的快捷键
- 如何搭建云进销存-销售管理系统?
- 如何安装linux安装光盘中的软件包
- 医学图像处理涉及到的窗宽窗位 1
- matlab如何求矩阵行列式
- EPICS记录参考--计算输出记录(calcout)
- 2021年红包封面小程序源码独立后台无限裂变线上线下引流工具微信流量主小程序
- Java MKT(平均动力学温度)值计算
- LocalDB的使用详解
- Univariate Distribution Relationships(单变量分布关系)