【Python】PyYAML库介绍及用法

这篇具有很好参考价值的文章主要介绍了【Python】PyYAML库介绍及用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

PyYAML库,import yaml

1、什么是yaml数据

2、YAML应用场景

3、PyYAML库-三方库

PyYAML库,import yaml

1、什么是yaml数据

YAML,全称是"YAML Ain't a Markup Language"(YAML 不是一种标记语言),是一种人类可读的数据序列化标准格式。它通常用于配置文件、数据交换等需求中。

YAML的设计目标是,数据结构易于理解,对人类友好,容易配对语言之间流通使用,且支持一次性dump(转储),然后又能一次性导入到程序里。

YAML数据通常使用.yml或.yaml为文件扩展名。一份YAML文件可能包含基本类型(数字,字符串,布尔型),数据集合(数组,列表),以及关联数组(哈希表,字典)

一个YAML数据的简单示例:

name: John Smith
age: 30
married: true
children:
  - name: Alice Smith
    age: 5
  - name: Bob Smith
    age: 7

在这段YAML数据中,我们定义了一个名为"John Smith"的人,他30岁,已婚,并且有两个孩子。

YAML的特点在于其良好的可读性和兼容性。你会发现YAML比XML或JSON更容易阅读和编辑,还能更好地和各种语言兼容。

2、YAML应用场景

Python中的YAML主要用于以下几种场景:

  1. 配置文件: YAML格式易读易写,人类友好,因此经常作为各种应用和工具的配置文件。例如,很多Python web框架(如Flask,Django)的配置文件就可以使用YAML编写。
  2. 数据序列化: YAML可以表示除基础的数字/字符串/布尔值等类型外,还可以表示列表、字典等复杂结构,因此适合作为数据序列化的格式。一些Python项目中,可能会将内存中的数据序列化成YAML格式,保存到文件或者数据库中,以便于后续恢复使用。
  3. 数据交换: YAML是一种通用的数据格式,可以跨语言使用,Python有成熟的YAML库支持,因此在进行跨语言的数据交换时,也会使用YAML这种格式。例如,一个Python程序和一个Ruby程序之间的数据交换,就可以使用YAML格式。
  4. 测试: 在一些测试场景中,测试用例数据利用YAML格式进行管理。因为YAML格式方便编写和阅读,有助于提高测试数据的维护效率。
  5. CI/CD脚本: 许多CI/CD(持续集成和持续部署)工具(如Travis CI,GitLab CI,Jenkins等)的脚本就是用YAML格式编写的。
  6. 容器编排: 例如 Kubernetes(K8s)官方推荐的编排文件就是使用YAML编写的。

以上就是在Python中使用YAML的一些常见场景。

3、PyYAML库-三方库

Python中的PyYAML库是一个用于解析和生成YAML数据的库。

YAML,即“YAML Ain't a Markup Language”(YAML不是一种标记语言),是一种易于阅读、适合表示层次和关联数据的可读数据序列化标准格式。

下面是如何安装和使用PyYAML的一些基本示例:

安装PyYAML库

可以使用pip在Python环境中安装PyYAML:

使用PyYAML库

PyYAML的主要功能函数是yaml.load(解析YAML数据)和yaml.dump(生成YAML数据)

pip install pyyaml
import yaml

# 解析YAML数据
data = yaml.load("""
- foo
- bar
- baz
""", Loader=yaml.FullLoader)
print(data)  # 输出:['foo', 'bar', 'baz']

# 生成YAML数据
data = {"foo": "bar", "baz": "qux"}
print(yaml.dump(data))  
# 输出:
# foo: bar
# baz: qux

注意:从PyYAML 5.1开始,默认的加载函数yaml.load(input)已经被废弃,为了安全解析YAML文件,推荐使用yaml.safe_load(input)或yaml.load(input, Loader=yaml.FullLoader)。

在处理YAML数据时,还需要注意YAML是区分大小写和缩进的,同样的,在PyYAML中也遵循这些规则。

以下是一些主要的方法:

  • yaml.load(stream, Loader=None): 将一个YAML文档从流中加载并产生一个Python对象。stream可以是一个字符串、一个文件对象或者一个字节流。
  • yaml.safe_load(stream): 这个函数和yaml.load()函数类似,但只能加载"安全的"YAML。这可以防止执行任何不安全的构造函数。推荐在处理不受信任的输入时使用此函数。
  • yaml.full_load(stream): 如果你不需要任何安全性, 但需要加载所有YAML 1.1的构造函数(日期、复数、任意精度等类型),可以使用此函数。
  • yaml.dump(data, stream=None, **kwds): 将一个Python对象序列化为一个YAML文档并写入一个流。如果stream为None,则把生成的YAML文档作为字符串返回。
  • yaml.safe_dump(data, stream=None, **kwds): 与dump()函数类似,但只能处理安全的Python对象,例如不能序列化Python的函数和类。
  • yaml.load_all(stream, Loader=None): 从一个流中加载所有的YAML文档并为每个文档生成一个Python对象。返回一个生成器,可以遍历产生的对象。
  • yaml.dump_all(documents, stream=None, **kwds): 将一系列Python对象序列化为YAML文档并写入一个流。如果stream为None,则把生成的YAML文档作为字符串返回。

此外,PyYAML还提供了一些方法方便自定义和扩展,例如定义自己的构造函数和表示函数,设置输出样式等。

以下是一些在Python中使用PyYAML库的示例:

加载YAML

你可以使用yaml.load函数(或者安全的yaml.safe_load函数)从字符串或者文件中读取YAML数据:

import yaml

# YAML字符串
yaml_string = """
name: John Smith
age: 30
married: true
children:
  - name: Alice Smith
    age: 5
  - name: Bob Smith
    age: 7
"""

data = yaml.safe_load(yaml_string)

print(data["name"])  # 输出:John Smith
print(data["children"][0]["name"])  # 输出:Alice Smith

写入YAML

你可以使用yaml.dump函数(或者安全的yaml.safe_dump函数)将Python对象转储为YAML格式的字符串,或者写入文件:

import yaml

data = {
    "name": "John Smith",
    "age": 30,
    "married": True,
    "children": [
        {"name": "Alice Smith", "age": 5},
        {"name": "Bob Smith", "age": 7},
    ]
}

yaml_data = yaml.dump(data)
print(yaml_data)
# 输出:
# name: John Smith
# age: 30
# married: true
# children:
#   - name: Alice Smith
#     age: 5
#   - name: Bob Smith
#     age: 7

加载多个YAML文档

有时候一个YAML文件中可能包含多个YAML文档,你可以使用yaml.safe_load_all函数一次性加载所有的文档:

import yaml

yaml_string = """
---
name: John
age: 30
---
name: Alice
age: 20
"""

documents = yaml.safe_load_all(yaml_string)

for doc in documents:
    print("---")
    print(doc)

在这个例子中,---是用来分隔多个YAML文档的标记。文章来源地址https://www.toymoban.com/news/detail-835025.html

到了这里,关于【Python】PyYAML库介绍及用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python教程(11)——Python中的字典dict的用法介绍

    列表虽然好,但是如果需要快速的数据查找,就必须进行需要遍历,也就是最坏情况需要遍历完一遍才能找到需要的那个数据,时间复杂度是O(n),显然这个速度是很难接受的,于是就必须要有新的数据结构出现,于是字典就诞生了! 在Python中,字典(Dictionary)是一种无序的

    2024年02月10日
    浏览(47)
  • Python教程(9)——Python变量类型列表list的用法介绍

    在Python中,列表(list)是一种有序、可变的数据结构,用于存储多个元素。列表可以包含不同类型的元素,包括整数、浮点数、字符串等。实际上列表有点类似C++语言中的数组,但仅仅只是类似,和数组还是有点不一样的。列表非常适合利用顺序和位置定位某一元素,尤其是

    2024年02月13日
    浏览(43)
  • python运算符&用法的详细介绍

    目录 1.算数运算 2.比较运算符 3.成员运算符 4.逻辑运算 5.赋值运算  附: 类型转换 1.算数运算 运算符:+加     -减     *乘     /除     //整除     % 余数     **幂运算   多用于整数、浮点数进行计算 + 也可用于字符串,拼接符,*可打印输出多次相同的字符串 注意:

    2024年02月09日
    浏览(68)
  • python深度学习【transforms所有用法介绍】

    裁剪——Crop 中心裁剪:transforms.CenterCrop 随机裁剪:transforms.RandomCrop 随机长宽比裁剪:transforms.RandomResizedCrop 上下左右中心裁剪:transforms.FiveCrop 上下左右中心裁剪后翻转,transforms.TenCrop 翻转和旋转——Flip and Rotation 依概率p水平翻转:transforms.RandomHorizontalFlip(p=0.5) 依概率p垂

    2024年02月03日
    浏览(48)
  • chatgpt赋能python:Python等待一秒:介绍和用法全解析

    在编写Python脚本时,我们通常要让程序暂停一段时间,这可以通过让程序等待一定的时间来实现。等待时间可以是任意长度的时间,最常见的时间单位是秒。Python中等待一秒的方法非常简单,只需要使用time库中的sleep()方法即可。 使用Python等待一秒非常简单,只需要在代码中

    2024年02月11日
    浏览(40)
  • python scipy.optimize.least_squares用法,各个参数详细介绍

    最优化作业,要用一个老师给出的一个线性加非线性的模型 来拟合 太菜了,手搓不了,只能直接用scipy.optimize.least_squares,充分利用到least_squares各个参数,之后拟合效果还是挺好的。         fun, x0, jac=\\\'2-point\\\', bounds=(-np.inf, np.inf), method=\\\'trf\\\',         ftol=1e-8, xtol=1e-8, gtol=1e-8,

    2024年03月17日
    浏览(44)
  • Python读写yaml文件

    YAML 是一种常见的标记性语言,常用于配置文件。本文就使用Python 对yaml文件的读写展开讨论。 yaml 语法请查看:https://blog.csdn.net/yuelai_217/article/details/130582142 1.1、读取单组数据 Python 读取yaml常见的有两种方式,一种是使用 pyyaml ,另一种是 ruamel.yaml 1.1.1、pyyaml test.yaml如下:

    2024年04月28日
    浏览(41)
  • Python之-操作yaml

    yaml:Yet Another Markup Language的缩写。Yaml是专门用来写配置文件的语言,非常简洁和强大,远比json格式方便。 Python搭建yaml环境 pip install PyYaml pip install --ignore-installed PyYAML yaml的语法规则 大小写敏感    使用缩进表示层级关系    缩进时不允许使用Tab键,只允许使用空格。  

    2024年02月04日
    浏览(33)
  • 【Python系列】Python中的YAML数据读取与解析

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月08日
    浏览(34)
  • Python读取和写入yaml文件

    yaml是专门用来写配置文件的语言,简洁强大,远比JSON格式方便,yaml在python语言中有PyYAML安装包。 我这边应用场景是用来做接口自动化时,接口返回的值写入到yaml文件,然后需要用的时候直接引用即可。不如登录接口,我需获取接口返回的token,下一个接口访问时需要携带

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包