pyYaml文件讲解(读取、写入、修改)

 yaml文件简介(小白至少要看一遍)

一:yaml文件基本语法

        1 大小写敏感

        2 使用缩进表示层级关系

        3 缩进时候不允许使用tab键,只允许使用空格

        4 缩进得空格数目不重要,只要相同层级的元素左侧对齐即可

        5 #表示注释,和python注释一样

 

二:yaml文件的三种结构

        1 (字典):键值对的集合

        2 (列表):一组按次序排列的值

        3 (字符串/布尔值/整数/浮点数/Null/时间/日期):字符集

写法演示

字典:yaml文件中的写法:

# ymal
user: admin
psw: "lzy123456"

 

字典嵌套字典:yaml文件中的写法

# ymal 层级关系使用缩进来使用
data:
  user: admin
  psw: "lzy123456"

 

列表里面嵌套字典:yaml文件写法:

- admin1: 12345
- admin2: 123456
- admin3: 123457

 

一个列表放多个值写法

name:
    - 小红
    - 小兰
    - 小白

读取结果>>>
['小红','小兰','小白']

 

yaml文件的混合使用:

复制代码
# ymal list嵌套dict
- user: admin1
  pwd: "12345"
- user: admin2
  pwd: "123456"
- user: admin3
  pwd: "123457"

"""
 python读出来的结果是
 [
 {"user":"admin1","pwd":"12345"},
 {"user":"admin2","pwd":"123456"},
 {"user":"admin3","pwd":"1234567"}
 ] 
"""
复制代码
复制代码
 # yaml dict嵌套list
 data1:
  - admin1
  - "12345"
data2:
  - admin2
  - "123456"
data3:
  - admin3
  - "1234567"

"""
  python读出来的结果是
  {
  "data1":["admin1","12345"],
  "data2":["admin2","123456"],
  "data3":["admin3","1234567"]
  }
"""
复制代码

 

1 安装:使用yaml文件之前,需要先下载yaml包

        使用命令:pip install pyyaml

 

1.  读取yaml文件

复制代码
import yaml


class OperateYaml:
    # 读取yaml
    def read_yaml(self):
        # 打开文件: yaml文件路径、r读取、编码、 重命名为文件流
        with open('./data_yaml.yaml', 'r', encoding='utf-8') as f:
            # 加载文件: 文件流、加载方式
            data = yaml.load(stream=f, Loader=yaml.FullLoader)
            return data
复制代码

 

2. 写入yaml文件。

  “a”追加写入,“w”清空文件后写入

  data 传入的值,必须是字典格式,例如 {'name': "123"}

# 写入yaml
    def write_yaml(self, data):
        # 打开文件
        with open('./data_yaml.yaml', 'a', encoding='utf-8') as f:
            # 写入文件
            yaml.dump(data=data, stream=f, allow_unicode=True)
 
 
3. 修改yaml文件
复制代码
# 修改yaml文件内容,具体方法为(提取>修改>写入)
def updata_yaml(self, key, value, path):
    """
    :param key: 键 :要修改哪个键对应的值
    :param value: 值:要修改的值
    :param path: 修改yaml文件路径
    :return:
    """
    # 读取yaml文件(这个函数是读取yaml函数,可以看上面的)
    old_data = self.read_yaml(path)
    # 修改读取的数据(key存在就修改对应值,key不存在就新增一组键值对)
    old_data[key] = value
    # 将修改后的字典写入yaml:(allow_unicode=True)用于处理写入中文时乱码问题
    with open(path, "w", encoding="utf-8", allow_unicode=True) as f:
        yaml.dump(old_data, f)
复制代码
posted @   博无止境  阅读(2306)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示