前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YAML+PyYAML笔记 1 | YAML简介和基础知识了解

YAML+PyYAML笔记 1 | YAML简介和基础知识了解

原创
作者头像
虫无涯
发布于 2023-07-27 04:18:44
发布于 2023-07-27 04:18:44
60500
代码可运行
举报
文章被收录于专栏:全栈测试技术全栈测试技术
运行总次数:0
代码可运行

1 什么是YAML?

  • 全称为:YAML Ain’t Markup Language,它不是标记语言,是一种轻量级数据交换格式;
  • 是一个易读易理解的数据序列化格式;
  • 面向文本,不同的语言中有相应的解析器和生成器,比如Python中的PyYAML
  • 可常用于各种语言的配置文件。

2 YMAL语法了解

  • 使用空白符、缩进和一些符号表示数据结构
  • 使用缩进表示数据结构的层次;
  • YMAL中字符串使用单引号、双引号均可;
  • 注释或备注使用#号;

2.1 数据类型

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 基本数据类型
str: "Hello World"              # 字符串类型
int: 123                        # 整数类型
float: 3.14                     # 浮点数类型
bool: true                      # 布尔类型
null: null                      # 空值类型

2.2 列表

  • 分有序列表和无序列表;
  • 有序列表以破折号表示,每个元素占一行;
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 数组类型
array:
 - item1                           # 元素1
 - item2                           # 元素2
 - item3                           # 元素3
  • 无序列表使用星号表示:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
* item1
* item2
* item3

2.3 对象

  • 即“字典”,为键值对形式# 映射类型 map: key1: value1 # 键值对1 key2: value2 # 键值对2 key3: value3 # 键值对3

2.4 多行字符串

  • 即可跨越多行的字符串;
  • 用竖线或大于符号来表示;
  • 竖线表示保留换行,大于号表示将多行合并成一行。
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
input_des: |
  My name
  is
  noamanelson.

output_d: >
  My name
  is
  noamanelson.

3 YAML的应用场景有哪些?

3.1 作为配置文件

  • 比如自动化测试中的config.yaml,可以写一些环境配置信息,或者用来管理接口数据等;
  • 比如开发项目中的配置文件,可以写数据库相关信息,域名,端口等信息;
  • 示例:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
Project: autotest
URl: xxx
env: 
  test: yyy
  pro: zzz
mysql:
  port: 8888
  username: test1
  password: 123456

3.2 作为数据交互

  • 可标识接口的请求和响应,和管理接口数据道理一样;
  • 示例:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 请求
method: POST
path: /login
params:
  username: NoamaNelson
  password: 123456

# 响应
status: 200
mes: success
token: fdshfsdhfsdfiereiopojfdjfjd
body:
 - userid: 1
    name: NoamaNelson

3.3 其它场景

  • 作为编排语言,用于容器编排工具中,如KubernetesDocker
  • 作为通用配置文件格式,用于自动化工具,如SaltStack

4 不同语言的解析和生成

  • Pythonpyyaml库;
  • Rubypsych 库;
  • Javasnakeyaml 库;
  • JavaScriptjs-yaml 库。

5 使用pyyaml库解析

  • 安装:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
pip install pyyaml
  • 新建一个config.yaml文件,如下:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# test

# 基本数据类型
str: "Hello World"              # 字符串类型
int: 123                        # 整数类型
float: 3.14                     # 浮点数类型
bool: true                      # 布尔类型
null: null                      # 空值类型

# 数组类型
array:
  - item1                           # 元素1
  - item2                           # 元素2
  - item3                           # 元素3

# 映射类型
map:
  key1: value1                      # 键值对1
  key2: value2                      # 键值对2
  key3: value3                      # 键值对3

input_des: |
  My name
  is
  noamanelson.

output_d: >
  My name
  is
  noamanelson.

Project: autotest
URl: xxx
env:
  test: yyy
  pro: zzz
Mysql:
  port: 8888
  username: test1
  password: 123456

# 请求
method: POST
path: /login
params:
  username: NoamaNelson
  password: 123456

# 响应
status: 200
mes: success
body:
  - userid: 1
    name: NoamaNelson
  • 新建一个yaml_read.py,代码如下:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/27 
# 文件名称:yaml_read.py
# 作用:yaml读取
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

with open("config.yaml") as f:
    yaml_obj = yaml.load(f, Loader=yaml.Loader)
print(yaml_obj)
  • 输出为:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
{'str': 'Hello World', 
'int': 123, 
'float': 3.14, 
'bool': True, 
None: None, 
'array': ['item1', 'item2', 'item3'], 
'map': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}, 
'input_des': 'My name\nis\nnoamanelson.\n', 
'output_d': 'My name is noamanelson.\n', 
'Project': 'autotest', 
'URl': 'xxx', 
'env': {'test': 'yyy', 'pro': 'zzz'}, 
'Mysql': {'port': 8888, 'username': 'test1', 'password': 123456}, 
'method': 'POST', 
'path': '/login', 
'params': {'username': 'NoamaNelson', 'password': 123456}, 
'status': 200, 
'mes': 'success', 
'body': [{'userid': 1, 'name': 'NoamaNelson'}]}

6 yaml.dump()和yaml.load()

6.1 yaml.dump()

  • Python字典转换为YAML格式;
  • 示例:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
dict_data = {'key1': 'value1', 'key2': {'name': 'xiaoming'}, 'key3': [{"name1": "xiaozhang"}]}
yaml_data = yaml.dump(dict_data)
print(yaml_data)
  • 输出:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
key1: value1
key2:
  name: xiaoming
key3:
 - name1: xiaozhang

6.2 yaml.load()

  • YAML格式转换为Python字典;
  • 示例:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
dict_data = {'key1': 'value1', 'key2': {'name': 'xiaoming'}, 'key3': [{"name1": "xiaozhang"}]}
yaml_data = yaml.dump(dict_data)
print(yaml_data)

yaml_data1 = 'key1: value1\nkey2:\n  name: xiaoli\n'
data = yaml.load(yaml_data1, Loader=yaml.FullLoader)
data1 = yaml.load(yaml_data, Loader=yaml.FullLoader)
print(data)
print(data1)
  • 输出:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
key1: value1
key2:
  name: xiaoming
key3:
- name1: xiaozhang

{'key1': 'value1', 'key2': {'name': 'xiaoli'}}
{'key1': 'value1', 'key2': {'name': 'xiaoming'}, 'key3': [{'name1': 'xiaozhang'}]}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
XSS(Cross Site Script,跨站脚本攻击)是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。跨站脚本攻击分有两种形式:反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标,目前有很多攻击者利用论坛、微博发布含有恶意脚本的URL就属于这种方式)和持久型攻击(将恶意脚本提交到被攻击网站的数据库中,用户浏览网页时,恶意脚本从数据库中被加载到页面执行,QQ邮箱的早期版本就曾经被利用作为持久型跨站脚本攻击的平台)。XSS虽然不是什么新鲜玩意,但是攻击的手法却不断翻新
唐怀瑟
2018/08/30
2.1K0
web网站常见攻击及防范
一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法.
全栈程序员站长
2022/09/06
1.4K0
web网站常见攻击及防范
常见网站攻击技术,一篇打包带走!
SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其邪恶的目的。
@超人
2021/09/17
8070
常见网站攻击技术,一篇打包带走!
Web 最常见安全知识总结
随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。Web业务的迅速发展吸引了黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显。黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这使得越来越多的用户关注应用层的安全问题,Web应用安全的关注度也逐渐升温。 本文从目前比
李海彬
2018/03/27
1.2K0
Web 最常见安全知识总结
常见的web安全问题总结
we安全对于web前端从事人员也是一个特别重要的一个知识点,也是面试的时候,面试官经常问的安全前端问题。掌握一些web安全知识,提供安全防范意识,今天就会从几个方面说起前端web攻击和防御的常用手段
小周sir
2019/12/24
1.2K0
【云安全最佳实践】WEB安全常见攻击与防范
对于常规的Web攻击手段,如XSS、CSRF、SQL注入、(常规的不包括文件上传漏洞、DDoS攻击)等1.XSS跨站脚本攻击,因为缩写和css重叠,所以能叫XSS,跨脚本攻击是指通过存在安全漏洞的web网站注册用户的浏览器内非法的非本站点HTML标签或javascript进行一种攻击。跨站脚本攻击有可能造成以下影响利用虚假输入表单骗取用户个人信息用脚本窃取用户的cookie值,被害者在不知情况的下,帮助攻击者发送恶意请求防范手册HEAD ctx.set('X-XSS-Protection',0) //禁止X
小周sir
2022/10/31
12.9K0
SQL注入和XSS攻击
SQL注入: 所谓SQL注入,就是通过把SQL命令插入到提交的Web表单或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,导致数据库中的信息泄露或者更改。 防范: 1.永远不要信任用户的输入,将用户输入的数据当做一个参数处理: 使用参数化的形式,也就是将用户输入的东西以一个参数的形式执行,而不是将用户的输入直接嵌入到SQL语句中,用户输入就被限于一个参数。 2.避免提示详细的错误信息: 当用户输入错误的时候,避免提示一些详细的错误信息,因为黑客们可以利用这些消息,使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。 3. 加密处理: 将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。 4.确保数据库安全: 锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限,撤销不必要的公共许可,如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限,那么就禁止它对此表的 drop 、insert、update、delete 的权限,并确保数据库打了最新补丁。
武军超
2019/07/02
2.5K0
万字长文 | 从DVWA靶场到EdgeOne,探索SQL注入、XSS、DDoS的攻击原理和防护
我在刚学习JDBC的时候,在学习视频里记住了一句话:在执行SQL的时候,要使用preparedStatement代替Statement防止sql注入。这可能是第一次接触到关于web防护的问题,只不过那时候初学计算机,只记住了这句话,而没有理解其中的意思。
叫我阿柒啊
2024/07/30
9916
万字长文 | 从DVWA靶场到EdgeOne,探索SQL注入、XSS、DDoS的攻击原理和防护
怎么防止sql注入攻击_网络安全的威胁
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
全栈程序员站长
2022/11/17
7920
竞争激烈的互联网时代,是否需要注重一下WEB安全?
一直以来自己对WEB安全方面的知识了解的比较少,最近有点闲工夫了解了一下。也是为了以后面试吧,之前就遇到过问WEB安全方面的问题,答的不是很理想,所以整理了一下!
拾贰
2019/08/28
7870
竞争激烈的互联网时代,是否需要注重一下WEB安全?
网站常见攻击与防御汇总
从互联网诞生起,安全就一直伴随着网站的发展,各种web攻击和信息泄露也从未停止,本文就当下最要的攻击手段进行一次简单的汇总,也作为自己的备忘。
写代码的猿
2019/04/11
1.6K0
什么是Web安全
攻击者通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行,从而达到攻击目的(获取用户信息,侵犯隐私)
w候人兮猗
2020/12/18
7970
网络安全威胁:揭秘Web中常见的攻击手法
随着互联网的快速发展,网络安全问题日益受到重视。Web应用程序面临着来自各种攻击者的威胁,这些攻击手段多种多样,旨在窃取数据、破坏服务或者利用用户身份进行非法操作。本文将介绍几种Web中常见的网络攻击类型,以提高开发者和网站管理员的防范意识。
Front_Yue
2024/07/19
5390
网络安全威胁:揭秘Web中常见的攻击手法
WEB服务器攻击类型和应对方案
肉鸡也称傀儡机,是指可以被黑客远程控制的机器。比如用"灰鸽子"等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。
星哥玩云
2022/05/28
1120
WEB服务器攻击类型和应对方案
web安全浅析
写这篇文章的初衷,主要由于自己所负责的项目有这方面的需求,就简要提一提web安全方面的一些知识 一.web安全的兴起 web攻击技术经历几个阶段 a.服务器
lyb-geek
2018/03/27
1.8K0
web安全浅析
XSS(跨站脚本攻击)相关内容总结整理
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。 跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。 攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。
全栈程序员站长
2022/07/20
8570
XSS(跨站脚本攻击)相关内容总结整理
常见web攻击
常见web攻击:https://www.cnblogs.com/morethink/p/8734103.html 搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事。本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式。
用户5760343
2022/05/19
7700
常见web攻击
常见的web攻击及预防
Web 安全的对于 Web 从业人员来说是一个非常重要的课题,所以在这里总结一下 Web 相关的安全攻防知识,希望以后不要再踩雷,也希望对看到这篇文章的同学有所帮助。今天这边文章主要的内容就是分析几种常见的攻击的类型以及防御的方法。
vimsudoers
2020/02/28
2.9K0
常见的Web攻击手段,拿捏了!
大家好,我是小菜。一个希望能够成为 吹着牛X谈架构 的男人!如果你也想成为我想成为的人,不然点个关注做个伴,让小菜不再孤单!
蔡不菜丶
2021/08/20
5960
常见六大 Web 安全攻防解析
XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。
小生方勤
2019/06/01
7910
相关推荐
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
更多 >
目录
  • 1 什么是YAML?
  • 2 YMAL语法了解
    • 2.1 数据类型
    • 2.2 列表
    • 2.3 对象
    • 2.4 多行字符串
  • 3 YAML的应用场景有哪些?
    • 3.1 作为配置文件
    • 3.2 作为数据交互
    • 3.3 其它场景
  • 4 不同语言的解析和生成
  • 5 使用pyyaml库解析
  • 6 yaml.dump()和yaml.load()
    • 6.1 yaml.dump()
    • 6.2 yaml.load()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档