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: value
 child-key2: value2
  • 如:新建 “Demo.yaml” 文件,并输入下列配置
database:
  host: localhost
  port: 1521
  username: user
  passwoed: 123

Python yaml 详解_第1张图片

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

import yaml

fileName = '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 yaml

fileName = '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
 - Sql

person:
 name: 张三
 age: 18

输出测试:

import yaml

fileName = '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 yaml

fileName = '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 yaml

fileName = '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

你可能感兴趣的:(Python,python,开发语言,yaml)