Python中使用YAML文件进行配置文件管理

 更新时间:2023年12月24日 08:36:17   作者:tester Jeffky  
配置文件管理已经成为了一个不可或缺的环节。它们包含了程序运行所需的各种参数,本文主要介绍了Python中使用YAML文件进行配置文件管理,感兴趣的可以了解一下

在现代软件开发中,配置文件管理已经成为了一个不可或缺的环节。它们包含了程序运行所需的各种参数,如数据库连接信息、服务器地址等。然而,传统的配置文件通常以文本形式存在,这种方式既容易出错,又不利于代码的维护和扩展。因此,使用YAML文件进行配置文件管理成为了一种趋势。本文将介绍如何使用Python中的PyYAML库来操作YAML文件,以及YAML文件的一些优缺点。

首先,我们需要安装PyYAML库。可以使用pip命令进行安装:

pip install pyyaml

接下来,我们来看一下YAML文件的基本结构。YAML文件是一种简洁的非标记语言,它使用缩进来表示层级关系。例如,以下是一个包含字典和列表的YAML文件:

person:
  name: John Doe
  age: 30
  hobbies:
    - reading
    - swimming

我们可以使用Python中的PyYAML库来读取和操作YAML文件。以下是一些基本的使用方法:

  • 读取YAML文件:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

print(data['person']['name'])  # 输出:John Doe
  • 修改YAML文件中的数据:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

data['person']['age'] = 31

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 添加新的键值对:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

data['person']['job'] = 'engineer'

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 删除键值对:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

del data['person']['age']

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 操作嵌套的字典和列表:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

# 访问嵌套的字典
print(data['person']['hobbies'][0])  # 输出:reading

# 修改嵌套的字典
data['person']['hobbies'][0] = 'cycling'

# 添加新的键值对到嵌套的字典
data['person']['address'] = {'city': 'New York', 'street': '5th Avenue'}

# 删除嵌套的字典中的键值对
del data['person']['address']['city']

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 操作嵌套的列表:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

# 访问嵌套的列表
print(data['person']['hobbies'])  # 输出:['reading', 'swimming']

# 修改嵌套的列表
data['person']['hobbies'].append('hiking')

# 添加新的元素到嵌套的列表
data['person']['friends'].append('Alice')

# 删除嵌套的列表中的元素
data['person']['hobbies'].remove('reading')

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)

YAML文件的优点:

  • 简洁易懂:YAML文件使用缩进来表示层级关系,使得文件结构清晰易读。
  • 易于维护:YAML文件可以方便地添加、修改和删除键值对,而无需修改整个文件。
  • 跨平台:YAML文件可以在多种操作系统和编程语言中使用,具有良好的兼容性。
  • 可读性高:YAML文件的格式与纯文本非常相似,便于人类阅读和理解。

YAML文件的缺点:

  • 性能较差:由于YAML文件使用了缩进和换行符来表示层级关系,因此在解析和生成文件时需要消耗一定的计算资源。
  • 不支持复杂的数据类型:YAML文件只支持字符串、数字、布尔值、列表和字典这五种基本数据类型,对于其他复杂的数据类型(如日期、时间、正则表达式等)的支持有限。

示例:
本专栏中使用yaml作为配置文件,如下方代码

BASE:
  test:
    url: "http://119.3.246.198:64644"

创建Conf.py操作类,用于读取和解析一个名为conf.yml的配置文件。

import os
from utils.YamlUtil import YamlReader

current = os.path.abspath(__file__)

BASE_DIR = os.path.dirname(os.path.dirname(current))

_config_path = BASE_DIR + os.sep + "config"
_config_file = _config_path + os.sep + 'conf.yml'


def get_config_path():
    return _config_path


def get_config_file():
    return _config_file


class ConfigYaml:
    def __init__(self):
        self.config = YamlReader(get_config_file()).data()

    def get_conf_url(self):
        return self.config['BASE']['test']['url']

  • 这段代码中导入了os模块和YamlReader类,用于处理文件路径和读取YAML文件。然后定义了两个函数get_config_path()和get_config_file(),分别返回配置文件所在的路径和文件名。
  • 接下来定义了一个名为ConfigYaml的类,该类在初始化时会调用YamlReader类来读取配置文件,并将读取到的数据存储在self.config属性中。类中还定义了一个方法get_conf_url(),用于获取配置文件中的BASE.test.url的值。
  • 最后,代码中创建了一个ConfigYaml类的实例,并调用get_conf_url()方法来获取配置文件中的URL值。其他配置信息也可以使用这种思想创建,如报告路径、测试用例路径等等。

到此这篇关于Python中使用YAML文件进行配置文件管理的文章就介绍到这了,更多相关Python YAML配置文件管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python上下文管理器和with块详解

    Python上下文管理器和with块详解

    这篇文章主要为大家详细介绍了Python上下文管理器和with块的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • python作图基础之plt.contour实例详解

    python作图基础之plt.contour实例详解

    contour和contourf都是画三维等高线图的,下面这篇文章主要给大家介绍了关于python作图基础操作之plt.contour的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python读取pdf表格写入excel的方法

    Python读取pdf表格写入excel的方法

    这篇文章主要介绍了Python读取pdf表格写入excel的方法,帮助大家更好的利用python处理excel表格,感兴趣的朋友可以了解下
    2021-01-01
  • python的函数和方法(上)

    python的函数和方法(上)

    这篇文章主要为大家详细介绍了python的函数和方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • python文件开头声明UTF-8编码的几种常用方式汇总

    python文件开头声明UTF-8编码的几种常用方式汇总

    这篇文章主要介绍了python文件开头声明UTF-8编码的几种常用方式汇总,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 详解python的数字类型变量与其方法

    详解python的数字类型变量与其方法

    大家都知道数字数据类型存储数值,它们是不可变的数据类型,这意味着改变数据类型的结果值,需要一个新分配的对象。这篇文章给大家详细介绍了python的数字类型变量以及其方法,文中介绍的很详细,相信对大家的理解和学习很有帮助,有需要的朋友们可以参考借鉴。
    2016-11-11
  • python pipreqs工具生成requirements.txt文件使用详解

    python pipreqs工具生成requirements.txt文件使用详解

    这篇文章主要为大家介绍了python pipreqs工具生成requirements.txt文件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 解决Django 在ForeignKey中出现 non-nullable field错误的问题

    解决Django 在ForeignKey中出现 non-nullable field错误的问题

    今天小编就为大家分享一篇解决Django 在ForeignKey中出现 non-nullable field错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python安装TA-Lib库报错问题的解决方法

    python安装TA-Lib库报错问题的解决方法

    TaLib是一个Python金融指数处理库,包含了很多技术分析里的常用参数指标,例如MA、SMA、WMA、MACD、ATR等,这篇文章主要给大家介绍了关于python安装TA-Lib库报错问题的解决方法,需要的朋友可以参考下
    2024-01-01
  • Python实现微信中找回好友、群聊用户撤回的消息功能示例

    Python实现微信中找回好友、群聊用户撤回的消息功能示例

    这篇文章主要介绍了Python实现微信中找回好友、群聊用户撤回的消息功能,结合实例形式分析了Python基于微信itchat模块实现针对撤回消息的查看功能相关操作技巧,需要的朋友可以参考下
    2019-08-08

最新评论