Python - 通过PyYaml库操作YAML文件

简介: Python - 通过PyYaml库操作YAML文件

PyYaml简单介绍


  • Python的PyYAML模块是Python的YAML解析器和生成器
  • 它有个版本分水岭,就是5.1

 

读取YAML5.1之前的读取方法


def read_yaml(self, path):
    with open(path, encoding="utf-8") as f:
        result = f.read()
        result = yaml.load(result)
        return result

当你运行的时候,会报一个Warning

image.png


读取YAML 5.1之后的读取方法


因为在5.1之后,直接用load()已经过时了,需要在方法里面加一个 loader 的请求参数,如下:

def read_yaml(self, path):
    with open(path, encoding="utf-8") as f:
         result = f.read()
         result = yaml.load(result, Loader=yaml.FullLoader) #loader可选择BaseLoader、SafeLoader、FullLoader、UnsafeLoader
         return result


也可以,根据Python语法糖转换,如下:

def read_yaml(self, path):
    with open(path, encoding="utf-8") as f:
        result = f.read()
        result = yaml.full_load(result)
        return result


针对不同的需要,加载器有如下几种类型:

  1. BaseLoader:仅加载最基本的YAML
  2. SafeLoader:安全地加载YAML语言的子集。建议用于加载不受信任的输入。(safe_load)
  3. FullLoader:加载完整的YAML语言。避免任意代码执行。这是当前(PyYAML 5.1)默认加载器调用 yaml.load(input) (发出警告后)(full_load)
  4. UnsafeLoader(也称为Loader向后兼容性):原始的Loader代码,可以通过不受信任的数据输入轻松利用。(unsafe_load) 

 

存储数据到YAML的方法


with open(path, "w", encoding="utf-8") as f:
     yaml.dump(data, f, Dumper=yaml.SafeDumper) # 可选BaseDumper、SafeDumper 


封装成一个操作YAML的工具类


class YamlUtil:
    __instance = None
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            print("YamlUtil first init")
            cls.__instance = super(YamlUtil, cls).__new__(cls, *args, **kwargs)
        return cls.__instance
    def read_yaml(self, path):
        with open(path, encoding="utf-8") as f:
            result = f.read()
            result = yaml.load(result, Loader=yaml.FullLoader)
            return result
    def write_yaml(self, path, data):
        with open(path, "w", encoding="utf-8") as f:
            yaml.dump(data, f, Dumper=yaml.SafeDumper)
yamlUtil = YamlUtil()
相关文章
|
1天前
|
XML JSON 数据库
Python的标准库
Python的标准库
108 77
|
1月前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
16天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
50 4
数据分析的 10 个最佳 Python 库
|
2天前
|
XML JSON 数据库
Python的标准库
Python的标准库
24 11
|
15天前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
67 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
2天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
28 8
|
23天前
|
XML 存储 数据库
Python中的xmltodict库
xmltodict是Python中用于处理XML数据的强大库,可将XML数据与Python字典相互转换,适用于Web服务、配置文件读取及数据转换等场景。通过`parse`和`unparse`函数,轻松实现XML与字典间的转换,支持复杂结构和属性处理,并能有效管理错误。此外,还提供了实战案例,展示如何从XML配置文件中读取数据库连接信息并使用。
Python中的xmltodict库
|
23天前
|
存储 人工智能 搜索推荐
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
Memoripy 是一个 Python 库,用于管理 AI 应用中的上下文感知记忆,支持短期和长期存储,兼容 OpenAI 和 Ollama API。
78 6
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
|
10天前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
21 4
|
23天前
|
数据采集 数据可视化 数据处理
Python数据科学:Pandas库入门与实践
Python数据科学:Pandas库入门与实践