pyyaml库的使用教程

简介

PyYAML用于将YAML格式的数据解析为Python对象,或将Python对象转换为YAML格式的数据。YAML是一种易于阅读和编写的数据序列化格式,常用于配置文件、数据传输和存储等场景。

安装

pip install pyyaml

使用

Load

假设有一个名为example.yml的YAML文件,其中包含以下内容:

name: John
age: 30
hobbies:
  - reading
  - hiking

我们可以通过yaml.load(file,Loader=yaml.Loader)的方法装载YAML文件,这将返回一个装有数据的字典,如:

import yaml

with open("example.yml") as f:
    load_data = yaml.load(f, Loader=yaml.Loader)
print(load_data)
print(load_data["name"], type(load_data["name"]))
print(load_data.get("age"), type(load_data.get("age")))
print(load_data["hobbies"], type(load_data["hobbies"]), load_data["hobbies"][0])

输出结果:

{'name': 'John', 'age': 30, 'hobbies': ['reading', 'hiking']}
John         <class 'str'>
30         <class 'int'>
['reading', 'hiking']         <class 'list'>         reading

也可以使用yaml.safe_load()方法,这样就可以不用传Loader=yaml.Loader形参了,如:

import yaml

with open("example.yml") as f:
    load_data = yaml.safe_load(f)
print(load_data)

输出结果:

{'name': 'John', 'age': 30, 'hobbies': ['reading', 'hiking']}

dump

可以使用PyYAML将Python对象转换为YAML格式的数据。假设有一个名为data的Python字典:

data = {
    'name': 'John',
    'age': 30,
    'hobbies': ['reading', 'hiking']
}

可以使用yaml.dump(data)yaml.safe_dump(data)将其转换为YAML格式的数据:

import yaml

yaml_data = yaml.dump(data)
# dump_data = yaml.safe_dump(data)
print(yaml_data)

输出结果:

age: 30
hobbies:
- reading
- hiking
name: John

然后可以将该结果写入到YAML文件中:

with open("example.yml","w") as f:
    f.write(yaml_data)

工具类

为该库写一个工具类,可以在方便的时候调用。如下:

import yaml


class YamlUtils:
    """yaml工具类"""

    @classmethod
    def loadYamlFile(cls, file_path, encoding="uft-8"):
        """
        加载yaml文件

        :param file_path: yaml文件路径
        :param encoding: 编码,默认为uft-8
        :return: yaml转换后的数据,格式为字典
        """
        with open(file_path, mode="r", encoding=encoding) as f:
            load_data = yaml.safe_load(f)
        return load_data

    @classmethod
    def dumpDataToYaml(cls, file_path, dict_data, encoding="uft-8"):
        """
        将数据写入yaml文件
        !!!注意该方法会覆盖yaml中的全部数据!!!

        :param file_path: yaml文件路径
        :param dict_data: 字典数据
        :param encoding: 编码,默认为uft-8
        :return:
        """
        dump_data = yaml.safe_dump(dict_data)
        with open(file_path, mode="w", encoding=encoding) as f:
            f.write(dump_data)

    @classmethod
    def getValue(cls, dict_data, key):
        """
        获取字典中的值
        可以配合`loadYamlFile`方法使用,如:
        load_data = YamlUtils.loadYamlFile("example.yml")
        value = YamlUtils.getValue(load_data)
        print(value)

        :param dict_data: 字典数据
        :param key: key
        :return: 对应key的值
        """
        return dict_data[key]

你可能感兴趣的:(python,linux,ubuntu)