热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

yaml.load与yaml.dump

YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML类似于XML,但是语法比XML简单得

YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的。

读取yaml文件数据

python通过open方式读取文件数据,再通过load函数将数据转化为列表或字典;

import yaml
import osdef get_yaml_data(yaml_file):# 打开yaml文件print("***获取yaml文件数据***")file = open(yaml_file, 'r', encoding="utf-8")file_data = file.read()file.close()print(file_data)print("类型:", type(file_data))# 将字符串转化为字典或列表print("***转化yaml数据为字典或列表***")data = yaml.load(file_data)print(data)print("类型:", type(data))return data
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "config.yaml")
get_yaml_data(yaml_path)输出:
"""
***获取yaml文件数据***
# yaml键值对:即python中字典
usr: my
psw: 123455
类型:
***转化yaml数据为字典或列表***
{'usr': 'my', 'psw': 123455}
类型:
"
""

yaml文件数据为键值对

(1)yaml文件中内容为键值对:

# yaml键值对:即python中字典
usr: my
psw: 123455
s: " abc\n"

python解析yaml文件后获取的数据:

{'usr': 'my', 'psw': 123455, 's': ' abc\n'}

2)yaml文件中内容为“键值对’嵌套"键值对"

# yaml键值对嵌套:即python中字典嵌套字典
usr1:name: apsw: 123
usr2:name: bpsw: 456

python解析yaml文件后获取的数据:

{'usr1': {'name': 'a', 'psw': 123}, 'usr2': {'name': 'b', 'psw': 456}}

(3)yaml文件中“键值对”中嵌套“数组”

# yaml键值对中嵌套数组
usr3:- a- b- c
usr4:- b

yaml文件数据为数组

(1)yaml文件中内容为数组

# yaml数组
- a
- b
- 5

python解析yaml文件后获取的数据:

['a', 'b', 5]

(2)yaml文件“数组”中嵌套“键值对”

# yaml"数组"中嵌套"键值对"- usr1: aaa
- psw1: 111usr2: bbbpsw2: 222

python解析yaml文件后获取的数据

[{'usr1': 'aaa'}, {'psw1': 111, 'usr2': 'bbb', 'psw2': 222}]

load函数中的Loader=yaml.FullLoader

#读取clinical的yaml文件
def read_clin_file(clinfile):with open(clinfile,'r') as CLIN:#备注:yaml版本5.1之后弃用,YAMLLoadWarning: calling yaml.load() without Loader=... is deprecatedclin_info = yaml.load(CLIN,Loader=yaml.FullLoader) #加上Loader=yaml.FullLoader 避免警告。name = clin_info['name']pro_id = clin_info['sample_id']return(name,pro_id)

yaml.dump 建立一个yaml文件

with open('C:\\Users\\51102\\Desktop\\123\\iddnfo.yaml','w') as ff:aproject = {'name': 'Silenthand Olleander','race': 'Human','traits': ['ONE_HAND', 'ONE_EYE']}yaml.dump(aproject,ff)ff.close()

import yaml
aproject = {'name': 'Silenthand Olleander','race': 'Human','traits': ['ONE_HAND', 'ONE_EYE']}print(yaml.dump(aproject,))

参考(感谢)
https://www.cnblogs.com/sunbeibei/p/13750991.html
https://www.cnblogs.com/klb561/p/9326677.html


推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 文件路径的生成及其在文件操作中的应用
    本文介绍了文件路径的生成方法及其在文件操作中的应用。在进行文件操作时,需要知道文件的具体位置才能打开文件。文件的位置有绝对路径和相对路径之分。绝对路径通常只在特定电脑上有效,不同电脑上的文件存放路径可能不同,导致程序报错。相对路径是解决这个问题的最好方式,它不依赖于文件的具体存放位置,只需要按照统一的规范进行文件存放即可。使用相对路径可以避免冗余和麻烦,特别适用于大项目和团队维护代码的情况。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
author-avatar
灬耗丨子灬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有