python 中yaml文件用法大全


Posted in Python onJuly 04, 2021

yaml简单介绍

YAML是一种标记语言,它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲。

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释

yaml数组

yaml语音数组很简单,使用短横线 ‘-' 作为数组的开始标志。

一维数组

import yaml
#三个双引号的作用是字符换行不需要加换行符
y = """
- 111
- 222
- 333
"""
# y等同于y1
y1 = '- 111\n- 222\n- 333'
config = yaml.safe_load(y)
config

out: [111, 222, 333]

二维数组

二维数组就是按照缩进关系来的,更多维数组道理相同,具体看下面的代码:

import yaml
y = """
-
  - 111
  - 222
  - 333
-
  - 111
  - 222
  - 333
"""
config = yaml.safe_load(y)
config

out : [[111, 222, 333], [111, 222, 333]]

yaml字典

简单字典形式

yaml字典的模式是Key: value 形式,中间使用冒号+空格进行连接

import yaml
y = """
'0': 1
'1': 2
'2': 3
"""
config = yaml.safe_load(y)
config

out: {‘0': 1, ‘1': 2, ‘2': 3}

复杂字典形式

下面的例子中,我们使用一个嵌套字典,就是字典里面的value值又是一个字典

import yaml
y1 = """
object1:
  'key1': 0
  'key2': 1
object2:
  'key1': 0
  'key2': 1  
"""
config = yaml.safe_load(y1)
config

out: {‘object1': {‘key1': 0, ‘key2': 1}, ‘object2': {‘key1': 0, ‘key2': 1}}

yaml 复杂结构 数组里面嵌入字典

import yaml
y1 = """
-
  'key1': 0
  'key2': 1
-
  'key1': 0
  'key2': 1
"""
config = yaml.safe_load(y1)
config

out: [{‘key1': 0, ‘key2': 1}, {‘key1': 0, ‘key2': 1}]

字典里面嵌入数组

import yaml
y1 = """
object1:
  - 111
  - 222
object2:
  - 111
  - 222
"""
config = yaml.safe_load(y1)
config

out : {‘object1': [111, 222], ‘object2': [111, 222]}

yaml读取和写入

YAML.yml文件内容:

python 中yaml文件用法大全

# yaml文件读取
import yaml
with open('YAML.yml','r')as f:
    config = yaml.safe_load(f)
config

out:[0, 111, 222]

# yaml写入文件
config = [1,2,3]
with open('YAML1.yml','w')as f:
    yaml.dump(config,f)

YAML1.yml文件内容:

python 中yaml文件用法大全

资料参考:

 YAML菜鸟教程

总结

yaml文件是项目配置常用的配置文件,通常我们会将超参数和一些常用值放在配置文件中,方便修改,读取也十分的方便。

到此这篇关于python 中yaml文件用法大全的文章就介绍到这了,更多相关python 中yaml文件用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
python实现web方式logview的方法
Aug 10 Python
Python常用内置模块之xml模块(详解)
May 23 Python
使用Python读取大文件的方法
Feb 11 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
Python爬取成语接龙类网站
Oct 19 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
深入了解Django中间件及其方法
Jul 26 Python
重写django的model下的objects模型管理器方式
May 15 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
python3实现常见的排序算法(示例代码)
用Python编写简单的gRPC服务的详细过程
Jul 04 #Python
python中__slots__节约内存的具体做法
Jul 04 #Python
python中Matplotlib绘制直线的实例代码
Jul 04 #Python
C站最全Python标准库总结,你想要的都在这里
Python实现列表拼接和去重的三种方式
Jul 02 #Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
You might like
php中去除所有js,html,css代码
2010/10/12 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
matplotlib中legend位置调整解析
2017/12/19 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
Python常用库大全及简要说明
2020/01/17 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
公司廉洁自律承诺书
2014/03/27 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
初婚初育证明范本
2015/06/18 职场文书
英语教学课后反思
2016/02/15 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android