当前位置: 首页 > news >正文

Python yaml 详解

文章目录

  • 1 概述
    • 1.1 特点
    • 1.2 导入
  • 2 对象
    • 2.1 字典
    • 2.2 数组
    • 2.3 复合结构
  • 3 操作
    • 3.1 读取
    • 3.2 写入

1 概述

1.1 特点

  • yaml 文件是一种数据序列化语言,广泛用于配置文件、日志文件等
  • 特点:
    • 大小写敏感
    • 使用缩进表示层级关系。缩进时不允许使用 Tab 键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对其即可。

1.2 导入

> pip install pyyaml

pyyaml 是第三方库,需要导入
扩展:Python 安装第三方库详解:https://blog.csdn.net/qq_34745941/article/details/106341898

2 对象

2.1 字典

# 格式1: 单个字典
key: value# 格式2:多维字典
key:child-key: valuechild-key2: value2
  • 如:新建 “Demo.yaml” 文件,并输入下列配置
database:host: localhostport: 1521username: userpasswoed: 123

在这里插入图片描述

输出测试:(以多维字典为例)

import yamlfileName = 'Demo.yaml'# Loader 制定使用 yaml.FullLoader 解析器,更加安全
with open(fileName, mode='r', encoding='utf-8') as file:config = yaml.load(file, Loader=yaml.FullLoader)print(config)print(config['database']['username'])

输出结果:

{'database': {'host': 'localhost', 'port': 1521, 'username': 'user', 'passwoed': 123}}
user

2.2 数组

# 格式1:单个数组
- A
- B
- C# 格式2: 多维数组
-- key1- key2
-- value1- value2

输出测试:(以多维数组为例)

import yamlfileName = 'Demo.yaml'# Loader 制定使用 yaml.FullLoader 解析器,更加安全
with open(fileName, mode='r', encoding='utf-8') as file:config = yaml.load(file, Loader=yaml.FullLoader)print(config)print(config[0])

输出结果:

[['key1', 'key2'], ['value1', 'value2']]
['key1', 'key2']

2.3 复合结构

langusges:- Java- Python- Sqlperson:name: 张三age: 18

输出测试:

import yamlfileName = 'Demo.yaml'# Loader 制定使用 yaml.FullLoader 解析器,更加安全
with open(fileName, mode='r', encoding='utf-8') as file:config = yaml.load(file, Loader=yaml.FullLoader)print(config)

输出结果:

{'langusges': ['Java', 'Python', 'Sql'], 'person': {'name': '张三', 'age': 18}}

3 操作

3.1 读取

import yamlfileName = 'Demo.yaml'# Loader 制定使用 yaml.FullLoader 解析器,更加安全
with open(fileName, mode='r', encoding='utf-8') as file:config = yaml.load(file, Loader=yaml.FullLoader)print(config)

3.2 写入

import yamlfileName = 'Demo.yaml'users = [{'name': '张三', 'age': 18},{'name': '李四', 'age': 19}]with open(fileName, mode='w', encoding='UTF-8') as file:yaml.dump(users, file, sort_keys=False, allow_unicode=True)

输出结果:

- name: 张三age: 18
- name: 李四age: 19
http://www.lryc.cn/news/172203.html

相关文章:

  • RabbitMQ消息可靠性(二)-- 消费者消息确认
  • 【python第7课 实例,类】
  • RocketMQ源码解析(上)
  • Webpack打包CSS文件,解决You may need an appropriate loader to handle this file type报错
  • 轮换对称性
  • 【MySQL基础】--- 约束
  • ROS2 的行为树 — 第 1 部分:解锁高级机器人决策和控制
  • kafka事务的详解
  • Flutter Fair逻辑动态化架构设计与实现
  • 【每日一题】74. 搜索二维矩阵
  • 软件测试进大厂,拿高薪,怎么做?看这里!
  • 【读书笔记】基于世界500强的高薪实战Kubernetes课程
  • 【Java 基础篇】Java并发包详解
  • MYSQL存储引擎基础知识介绍
  • vue学习之element-ui组件集成
  • 如何通过百度SEO优化提升网站排名(掌握基础概念,实现有效优化)
  • Golang 字符串
  • python应用中使用了multiprocessing多进程,使用pyinstaller打包出来的程序可能产生多个窗口
  • 数据结构与算法——13.队列的拓展
  • 机器学习入门教学——损失函数(交叉熵法)
  • pytest一些常见的插件
  • 基于51单片机多路DTH11温湿度检测控制系统
  • 宝塔重装注意事项
  • 【MySQL】 MySQL的增删改查(进阶)--壹
  • Map<K,V>的使用和List学习
  • Flask实现Web服务调用Python程序
  • 步步为营,如何将GOlang引用库的安全漏洞修干净
  • as-if-serial与happens-before原则详解
  • 基于Yolov8的工业小目标缺陷检测(2):动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023
  • ARM64汇编基础