【Python】Pyyaml和ruamel.yaml

article/2025/9/11 8:27:23

目录

PYYAML

读取yaml

保存yaml

读取保存的yaml文件 

 yaml文件规则

yaml文件数据结构

ruamel.yaml

格式化保存yaml

使用ruamel.yaml读取yaml

使用ruamel.yaml时python中符号对应于yaml中符号


PYYAML

config.yaml文件

username: zxx
age: 18
orther:height: 175CMweitht: 107KG
JobHistory:- name: IBMdate: 2015-2017- name: GAdate: 2017-now

读取yaml

read_yaml.py文件

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# load-yaml.pyimport os
import yamluserInfo = yaml.load(open(r"D:\myproject\MyUtils\test_yaml\config.yaml", 'r'))
print(userInfo)

结果为:

{'JobHistory': [{'name': 'IBM', 'date': '2015-2017'}, {'name': 'GA', 'date': '2017-now'}], 'username': 'zxx', 'orther': {'weitht': '107KG', 'height': '175CM'}, 'age': 18}

保存yaml

import yamldata = {"cookie1":{'domain': '.yiyao.cc', 'expiry': 1521558688.480118, 'httpOnly': False}}f = open(r'D:\myproject\MyUtils\test_yaml\save_config.yaml','a')
print(yaml.dump(data, f))
f.close()

结果为

{'cookie1': {'domain': '.yiyao.cc', 'expiry': 1521558688.480118, 'httpOnly': False}}

save_config.yaml文件内容为

读取保存的yaml文件 

import yamlf = open(r'D:\myproject\MyUtils\test_yaml\save_config.yaml','r')
# 读取文件
cont = f.read()
# 加载数据
x = yaml.load(cont)
# 打印数据
print(x)
f.close()

结果为:

{'cookie1': {'expiry': 1521558688.480118, 'domain': '.yiyao.cc', 'httpOnly': False}}

 yaml文件规则

  • 区分大小写;
  • 使用缩进表示层级关系;
  • 使用空格键缩进,而非Tab键缩进
  • 缩进的空格数目不固定,只需要相同层级的元素左侧对齐;
  • 文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注;
  • 注释标识为#

yaml文件数据结构

  • 对象:键值对的集合(简称 "映射或字典")
    键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
  • 数组:一组按序排列的值(简称 "序列或列表")
    数组前加有 “-” 符号,符号与值之间需用空格分隔
  • 纯量(scalars):单个的、不可再分的值(如:字符串、bool值、整数、浮点数、时间、日期、null等)
    None值可用null可 ~ 表示

ruamel.yaml

从上面pyyaml保存yaml的处理中可以发现,保存出来的save_config.yaml是字典形式,不是yaml的标准形式,这对于追求一致性的强迫症来说,有点难受。这时发现有一个库ruamel.yaml可以完美解决这个问题。

格式化保存yaml

from __future__ import print_functionimport ruamel.yaml
import osdef generate_yaml_doc_ruamel(yaml_file):from ruamel import yamlpy_object = {'school': 'zhang','students': ['a', 'b']}file = open(yaml_file, 'w', encoding='utf-8')yaml.dump(py_object, file, Dumper=yaml.RoundTripDumper)file.close()
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "save_ruamel_config.yaml")
generate_yaml_doc_ruamel(yaml_path)

结果为

使用ruamel.yaml读取yaml

import os# 通过from ruamel import yaml读取yaml文件
def get_yaml_data_ruamel(yaml_file):from ruamel import yamlfile = open(yaml_file, 'r', encoding='utf-8')data = yaml.load(file.read(), Loader=yaml.Loader)file.close()print(data)
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "save_ruamel_config.yaml")
get_yaml_data_ruamel(yaml_path)

使用ruamel.yaml时python中符号对应于yaml中符号

python中代码

py_object = {'school': 'zhang','students': ['a', 'b'],'age':{'old':34,'young':10},'test':{'test1':123, 'test2':456, 'test3':{'test3_0':0, 'test3_1':[1,1,1,1]}}}

结果为 

age:young: 10old: 34
school: zhang
test:test3:test3_0: 0test3_1:- 1- 1- 1- 1test2: 456test1: 123
students:
- a
- b

 


http://chatgpt.dhexx.cn/article/sisj4SkZ.shtml

相关文章

Ruby教程(基础篇)

1. Print和puts的区别 puts输出内容独立成行、自动换行,而print会把输出的内容打印在同一行。 2. 变量和常量 character_name "Kevin" #variable name变量character_age "21"puts ("name:" character_name)puts (character_a…

Ruby语言简介

Ruby是一种解释型、面向对象、动态类型的语言。Ruby采取的策略是在灵活性和运行时安全之间寻找平衡点。随着Rails框架的出现,Ruby也在2006年前后一鸣惊人,同时也指引人们重新找回编程乐趣。尽管从执行速度上说,Ruby谈不上有多高效&#xff0c…

Ruby基本介绍

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。Ruby 可运行于多…

字典生成----在线密码破解工具hydra和medusa的使用

大家好,我是SuieKa。 本次主要稍微详细分析一下字典的生成和在线密码破解工具hydra和medusa及使用案例,希望对大家学习上有帮助! 目录表 一、常见字典生成工具及使用方法1、字典生成工具crunch2、cupp自定义字典3、cewl-根据网站信息生成字典…

入侵AI Medusa 的赛博之海,诚邀#光点2022

未来性 | 突破性 | 跨领域 TEA 新媒体社区发起光点国际新媒体艺术节已经迈入第五年,每年推出的活动板块具前瞻视野,深受赞誉,感谢大家的支持和厚爱。 光点2022国际新媒体艺术节组委会通过 TEA 新媒体社区的力量,打造全球化、合作式…

Medusa学习Medusa参数使用

Medusa学习&&Medusa参数使用 文章目录 Medusa学习&&Medusa参数使用一、Medusa学习二、Medusa参数使用三、我的公众号 一、Medusa学习 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具。可以同时对多个主机,…

Medusa和Hydra快速入门手册

Hydra入门使用手册 vanHauser TheHackersChoice http://www.thc.org/thc-hydra 目录 什么是Hydra? Hydra-GTK 如何安装 如何使用Hydra? 参考文档 爆破实例 免责说明 联系我们 防范措施 什么是Hydra? 一个非常快速的网络登录破解程序&#xff…

【kali-密码攻击】(5.1.2)密码在线破解:Medusa

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

Kali 暴力破解--medusa/hydra/xhydra

目录 1 实战-使用 hydra 工具在线破解系统用户密码 2 实战-使用 Medusa 工具在线破解 3 实战-图形化暴力破解软件 xhydra 1 实战-使用 hydra 工具在线破解系统用户密码 2 实战-使用 Medusa 工具在线破解 3 实战-图形化暴力破解软件 xhydra 环境 Kali Centos7(192.168.0.…

密码爆破工具:Medusa(美杜莎)-操作说明

科普下: Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare), NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP (AUTH/VRFY), SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC的密码爆破工具。 最近搞一个项目,需要爆破postgres这个数据库的…

新增X-Helios、X-Medusa算法研究

纯属技术研究,如有侵权,请联系删除 抓个包,在抖音最新的23.7.0版本中,已经新增加了2个参数x-helios,x-medusa 进去解开看了一下,解开得内容和argus得内容相差并不是很大.第一个pb参数从四字节数变成了一段字节串,其他…

Mesa简介

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source software implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers. Mesa 实际…

最新版X-Helios、X-Medusa、X-Ladon、X-Argus逆向与风控分析

今天安装新了最新版的某短视频app(23.5.0版),发现了一些新的东西 1、新的加密参数X-Helios、X-Medusa 2、新的请求参数 咱们到处逛逛 ,看下哪些请求都用了这些请求参数 我们主要关注几个重要的 (1)详情页 (2)列表页 (3) 播放 (…

medusa破解ssh

medusa -h 192.168.3.56 -u priess -P /passwd.txt -M ssh打开kail 输入 即可

Hydra/Medusa爆破工具命令参数和简单操作

1.hydra参数介绍 -l :指定单个用户名称 -L:指定用户名称字典 -p :指定单个密码 -P :指定密码字典 -vV :显示详细的执行过程 -R :根据上一次进度继续破解 -S :使用SSl协议连接 -s &#…

使用kali的medusa工具

实验目的: 练习使用kali的medusa工具 实验环境: 系统:kali CentOs7 kali用户名:kali 密码:kali 靶机用户名:root 密码:123456 实验步骤: 一、通过命令“ip addr”Centos7…

在线密码破解medusa

pw-inspector 按长度和字符集筛选字典 pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -l #提取小写字母pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -u密码破解效率 密码复杂度(字典命中率) 带宽、协议、服务器性能、客户端…

Kali-登录暴力破解器工具-medusa使用

medusa是什么? https://www.kali.org/tools/medusa KaliLinux网址对美杜莎机翻: Medusa 旨在成为一个快速、大规模并行、模块化的登录暴力破解器。目标是支持尽可能多的允许远程身份验证的服务。作者认为以下项目是该应用程序的一些关键特性&#xff1a…

密码爆破工具————Medusa(美杜莎)介绍

Medusa(美杜莎),开源的软件,kali中有集成。 支持爆破的服务有: AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare), NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP (AUTH/VRFY), SNMP, …

密码工具Medusa(美杜莎)参数使用教程

Medusa是一种密码爆破工具,它支持多个协议的爆破,包括FTP、POP3、SSH、Telnet等。其主要特点是速度快,支持多线程操作。下面是Medusa工具的介绍和常用参数: 安装Medusa 在Kali Linux中可以直接使用以下命令进行安装: a…