YAML+PyYAML笔记 8 | PyYAML源码之full_load(),full_load_all(),safe_load(),unsafe_load(),unsafe_load_all()

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: YAML+PyYAML笔记 8 | PyYAML源码之full_load(),full_load_all(),safe_load(),unsafe_load(),unsafe_load_all()

1 yaml.full_load()

  • 源码:
    在这里插入图片描述
  • 作用:解析流中的第一个YAML文档并生成相应的Python对象;解析所有标记,不包括那些在不受信任的输入中已知不安全的标记。
  • 解析:
# config_yaml02.yaml如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: uat
  name: game-test
  labels:
    app: game-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: game-test
  template:
    metadata:
      labels:
        app: game-test
    spec:
      containers:
      - name: game-test
        image: 192.168.1.5:5000/test/game-test:v1
        resources:
          limits:
            cpu: 1000m
            memory: 3000Mi
          requests:
            cpu: 500m
            memory: 1024Mi
        volumeMounts:
        - name: logs
          mountPath: /data/service/game-test/project/logs
        ports:
        - containerPort: 3008
        readinessProbe:
          tcpSocket:
            port: 3008
          initialDelaySeconds: 15
          periodSeconds: 15
        livenessProbe:
          tcpSocket:
            port: 3008
          initialDelaySeconds: 20
          periodSeconds: 20
      volumes:
      - name: logs
        hostPath:
          path: /tmp/logs
# pyyaml_full_load.py如下:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/28 
# 文件名称:pyyaml_full_load.py
# 作用:yaml.full_load()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

with open('config_pyyaml02.yaml', 'r') as f:
    data = yaml.full_load(f)
print(data)
  • 输出:
{
   
   'apiVersion': 'extensions/v1beta1', 'kind': 'Deployment', 'metadata': 
{
   
   'namespace': 'uat', 'name': 'game-test', 'labels': {
   
   'app': 'game-test'}}, 
'spec': {
   
   'replicas': 1, 'selector': {
   
   'matchLabels': {
   
   'app': 'game-test'}}, 
'template': {
   
   'metadata': {
   
   'labels': {
   
   'app': 'game-test'}}, 'spec': 
{
   
   'containers': [{
   
   'name': 'game-test', 'image': '192.168.1.5:5000/test/game-test:v1', 'resources': {
   
   'limits': {
   
   'cpu': '1000m', 'memory': '3000Mi'}, 
'requests': {
   
   'cpu': '500m', 'memory': '1024Mi'}}, 'volumeMounts': [{
   
   'name': 'logs', 'mountPath': '/data/service/game-test/project/logs'}], 'ports': 
[{
   
   'containerPort': 3008}], 'readinessProbe': {
   
   'tcpSocket': {
   
   'port': 3008}, 'initialDelaySeconds': 15, 'periodSeconds': 15}, 'livenessProbe': {
   
   'tcpSocket': 
{
   
   'port': 3008}, 'initialDelaySeconds': 20, 'periodSeconds': 20}}], 'volumes': [{
   
   'name': 'logs', 'hostPath': {
   
   'path': '/tmp/logs'}}]}}}}

2 yaml.full_load_all()

  • 源码:
    在这里插入图片描述
  • 作用:解析流中的所有YAML文档并生成相应的Python对象;解析所有标记,不包括那些在不受信任的输入中已知不安全的标记。
  • 解析:
# config_yaml03.yaml如下:
---
user1:
  name: xiaoming
  age: 23
  password: 123456
---
user2:
  name: xiaozhang
  age: 24
  password: 123456
---
user3:
  name: xiaoli
  age: 25
  password: 123456
# pyyaml_full_load_all.py如下:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/28 
# 文件名称:pyyaml_full_load_all.py
# 作用:yaml.full_load_all()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

f = open('config_pyyaml03.yaml', 'r')
docs = yaml.full_load_all(f)
for doc in docs:
    print(doc)
f.close()
  • 输出:
{
   
   'user1': {
   
   'name': 'xiaoming', 'age': 23, 'password': 123456}}
{
   
   'user2': {
   
   'name': 'xiaozhang', 'age': 24, 'password': 123456}}
{
   
   'user3': {
   
   'name': 'xiaoli', 'age': 25, 'password': 123456}}

3 yaml.safe_load()

  • 源码:
    在这里插入图片描述

  • 作用:

解析流中的第一个YAML文档,并生成相应的Python对象。只解析基本的YAML标记。这是已知的对于不可信的输入是安全的。

  • 解析:
# config_pyyaml04.yaml
{
   
   
    name: John Doe,
    age: 28,
    hobbies: [hiking, cooking, fishing],
    address:
        {
   
   
            city: New York,
            state: NY,
            street: 100 Main St,
            location:
                {
   
   
                 longitude: 40.712776,
                 latitude: -74.005974
                }
        },
    family:
        [
            {
   
   
                name: Jane,
                age: 25,
                relation: spouse
            },
            {
   
   
                name: Joe,
                age: 3,
                relation: son
            }
        ]
}
# pyyaml_safe_load.py
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/31 
# 文件名称:pyyaml_safe_load.py
# 作用:yaml.safe_load()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

with open("config_pyyaml04.yaml") as f:
    data = yaml.safe_load(f)
print(data)
  • 输出:
{
   
   'name': 'John Doe', 'age': 28, 'hobbies': ['hiking', 'cooking', 'fishing'], 'address': {
   
   'city': 'New York', 'state': 'NY', 'street': '100 Main St', 'location': {
   
   'longitude': 40.712776, 'latitude': -74.005974}}, 'family': [{
   
   'name': 'Jane', 'age': 25, 'relation': 'spouse'}, {
   
   'name': 'Joe', 'age': 3, 'relation': 'son'}]}

4 yaml.unsafe_load()

  • 源码:
    在这里插入图片描述
  • 作用:

解析流中的第一个YAML文档,并生成相应的Python对象。解析所有标签,即使是已知的不受信任的输入不安全。

5 yaml.unsafe_load_all()

  • 源码:
    在这里插入图片描述
  • 作用:

分析流中的所有YAML文档,并生成相应的Python对象。解析所有标签,即使是已知的不受信任的输入不安全。

目录
相关文章
|
3月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
82 0
|
XML 编解码 数据挖掘
YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml
YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml
1789 1
YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml
|
Python
YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()
YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()
71 2
|
测试技术 Python
老板叫我写个APP自动化--Yaml文件读取--内附整个框架源码
老板叫我写个APP自动化--Yaml文件读取--内附整个框架源码
118 0
|
Python
YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject
YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject
121 0
YAML+PyYAML笔记 5 | YAML流样式、块样式、序列样式、Flow Mappings
YAML+PyYAML笔记 5 | YAML流样式、块样式、序列样式、Flow Mappings
55 0
|
2月前
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
5月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
28天前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
28天前
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法