1.Python接口自动化之yaml配置文件
2.[极简教程]在Windows+MinGW+CMake环境下使用yaml-cpp库,实现流程与坑点
3.SpringBoot中如何优雅的源码读取yml配置文件?
4.深度学习项目中配置文件探析,用ini、实现json还是源码yaml?附源码示例
5.如何利用yolov5训练自定义数据集
6.SpringBoot全局配置文件加载原理详解(万字源码分析)
Python接口自动化之yaml配置文件
在先前的Python接口自动化测试系列文章中,我们探讨了“Python接口自动化之数据驱动”,实现其中涉及了openpyxl操作excel并结合ddt实现数据驱动的源码safari源码这么看相关内容。
在接口自动化测试过程中,实现配置文件的源码运用是不可或缺的,比如数据库信息、实现账号信息、源码域名等都需要通过配置文件来存储。实现
在众多配置文件类型中,源码yaml文件以其简洁的实现操作和强大的功能,成为了一种流行的源码选择。相较于ini或conf等配置文件,实现yaml文件更加简洁,且易于操作,能够存放多种类型的数据。
本文将主要介绍yaml语法的使用、yaml数据的存储方式以及如何封装类来读写yaml配置文件。
一、yaml介绍及使用
yaml简介
YAML语言的设计目标是方便人类读写,本质上是一种通用的数据串行化格式。
YAML语言非常灵活,几乎可以看作是JSON的超集。除了支持注释、换行符分隔、多行字符串、裸字符串以及更灵活的类型系统之外,YAML还支持引用文件,以避免代码重复。
yaml语法规则
基本语法规则如下:
yaml数据结构
▌对象
Map(属性和值)(键值对)的形式:
key:(空格)value:表示一对键值对,空格不可省略。
一行写法:相当于JSON格式:
▌数组
一组连词线开头的行,构成一个数组。数组前加有 “-” 符号,童话ol源码符号与值之间需用空格分隔。
一行写法:相当于JSON:
▌纯量
单个的、不可再分的值。(如:字符串、bool值、整数、浮点数、时间、日期、null等)
二、yaml配置文件的使用
yaml配置文件准备
在项目下新建一个目录config,在目录下新建一个文件config.yaml。
在config.yaml配置文件中写入数据库配置。
yaml配置文件格式校验
对于刚开始接触yaml的同学,可能对yaml格式的掌握不够熟练,容易出现格式错误。这里推荐一个在线网站,用于校验我们写的yaml文件格式是否正确。
在线地址:
bejson.com/validators/y...
三、yaml配置文件读写
python中读取yaml文件前需要安装pyyaml和导入yaml模块。
安装pyYaml
在python中读取yaml文件,需要用到第三方模块PyYaml。
安装命令:
pip install pyYaml
yaml模块源码解析
从yaml模块中提取出load、dump函数。
load:
将yaml流转化为python字典;
dump:
将python对象转化为yaml流;
读写yaml配置文件
将读写yaml配置文件的类进行封装。
在common目录下新建一个文件,config_handler.py用于读写yaml。
config_handler.py
运行结果为:
写入到config1.yaml的数据。
config1.yaml
总结:本文主要介绍yaml语法、yaml储存数据,封装类读取yaml配置文件。
[极简教程]在Windows+MinGW+CMake环境下使用yaml-cpp库,流程与坑点
YAML,作为流行的配置文件格式,其在C++下的收录站 源码读写操作常由yaml-cpp库实现。在Windows+MinGW+CMake环境下配置yaml-cpp,需掌握一系列步骤与注意点。
第一步,准备开发环境,包括Windows+MinGW+CMake。已有文章对这一步骤有详细介绍。
第二步,从GitHub获取yaml-cpp最新源码,版本为0.7.0。
第三步,编译源码。yaml-cpp支持静态库与动态库两种形式。静态库编译无需修改选项,动态库则需在CMake中设置标志位YAML_BUILD_SHARED_LIBS为ON。
第四步,其他程序使用yaml-cpp。静态库使用时需手动添加YAML_CPP_STATIC_DEFINE宏,动态库则不需额外操作,但运行程序时需依赖dll文件。
静态库与动态库在CMakeLists.txt中的区别在于yaml-cpp源码中的dll.h文件处理。静态库编译时,YAML_CPP_STATIC_DEFINE宏被定义,使YAML_CPP_API与YAML_CPP_NO_EXPORT宏为空。动态库则根据平台不同,若为Windows,编译出的函数前缀为__declspec(dllexport),以适应dllimport需求。
在使用yaml-cpp时,静态库与动态库的区别在于前缀处理。静态库使用时,若平台为Windows,需手动定义YAML_CPP_STATIC_DEFINE宏,以匹配dllimport需求。动态库则无需此操作,但运行时依赖dll文件。电烙铁源码
yaml-cpp库设计时的这种前缀处理方式,可能源于编译环境与平台兼容性的考虑,以确保库的兼容性和正确性。在实际使用过程中,通过正确配置和理解这一设计,可以顺利解决相关问题。
SpringBoot中如何优雅的读取yml配置文件?
YAML是一种简洁、以数据为中心的非标记语言,通过空格、缩进和分行来组织数据,以提高代码的可读性。本文将深入探讨YAML的基本语法、支持的数据格式以及如何在SpringBoot框架中优雅地读取YAML配置文件。 在YAML中,字符串默认不需要加引号,但加双引号表示不会转义特殊字符,加单引号则会转义。键值对通过冒号分隔,键需顶格书写,后跟空格及值。相同缩进代表同一层级。 数组元素使用减号表示。通过实例来直观展示YAML的基本用法。 在SpringBoot中读取YAML配置文件,首先创建一个项目并添加相关依赖。将配置信息写入application.yml文件,通过实体类添加@ConfigurationProperties注解,实现自动绑定数据。以WxMpProperties类为例进行配置。 接着,创建一个控制器来读取YML配置文件,并打印配置信息,验证读取是否成功。通过访问/suisui/s... 以下是,以进一步提升技能水平:SpringBoot中如何灵活的ueeshop英文源码实现接口数据的加解密功能?
SpringBoot中神奇的@Enable*注解?
Java中Integer.parseInt和Integer.valueOf,你还傻傻分不清吗?
SpringCloud系列-整合Hystrix的两种方式
SpringCloud系列-利用Feign实现声明式服务调用
限时免费领取Java相关资料,覆盖Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等技术。关注下方公众号即可免费获取。深度学习项目中配置文件探析,用ini、json还是yaml?附源码示例
在深度学习项目开发中,配置文件的管理是提升效率和代码整洁度的关键。Python项目中,常见的配置选项包括在py文件中、ini或cfg文件、json、yaml等。以下是它们的简要探讨:
首先,py文件内的配置简单易用,但跨语言共享性较差。Python内置的configparser库支持ini或cfg格式,如config.cfg,其结构包括节、键和值。读取时,使用configparser将配置转换为字典便于调用。
json作为另一种流行方式,其简洁且易于处理字符串和字典。将cfg转换为json后,读取代码同样直观。然而,json的注释和复杂结构支持不如ini和cfg。
yaml,尤其是yaml(yml)格式,近年来在配置文件中占据一席之地,特别是在Rasa对话机器人和docker_compose.yml等场景。Python提供了PyYAML工具包来解析yaml文件,使用safe_load()加载以保证安全性。yaml文件支持字典、列表和数值的组合,数据结构灵活。
虽然本文仅介绍了ini、json和yaml,其他格式如toml和xml也值得进一步探索。对于yaml的具体使用规则和数据结构,建议查阅官方文档以获取更深入的理解。
尽管如此,由于作者的局限性,本文可能未能涵盖所有细节,期待读者的指正和补充。
如何利用yolov5训练自定义数据集
一、前言
本文介绍如何利用yolov5算法训练自定义数据集,并应用于项目中解决复杂场景下的目标检测问题。
二、yolov5训练的大致流程
1. 准备数据和标签,确保数据和标签一一对应。
2. 编写数据配置文件(data.yaml),配置训练集和验证集路径,设定类别数量和名称。
3. 打开yolov5源码,编辑train.py文件进行相关配置。
4. 开始训练,得到最佳模型权重(best.pt)和最后模型权重(last.pt)。
三、具体步骤
1. 制作YOLOv5格式数据集
准备数据和标签,使用LabelImg标注数据,并建立自定义数据集文件夹,设置文件结构,包括训练集、验证集、测试集的和标签文件。
制作数据配置文件data.yaml,详细配置训练集和验证集路径,类别数量和名称。
2. 修改文件
调整模型配置文件(yolov5s.yaml)中nc(类别数量)值,根据自定义数据集情况修改。
调整train.py文件参数,包括batch-size等。
将预训练权重文件放入weights文件夹。
3. 训练模型
进入虚拟环境,下载项目所需库。
训练过程包括下载依赖库、运行命令开始训练。
使用best.pt模型、预训练模型或从头开始训练。
4. 测试模型
使用自定义数据集中的测试集进行模型测试,查看检测效果。
评估模型性能,如mAP值,确保模型在自定义数据集上的表现。
四、总结
yolov5算法训练流程相对简便,通过合理设置和调整,能够有效训练出性能优秀的模型。希望读者能够成功应用至自己的项目中,与我分享训练经验,共同探讨。
SpringBoot全局配置文件加载原理详解(万字源码分析)
SpringBoot通过全局配置文件实现项目部署和修改的便利性,以application.properties或application.yaml为核心,配置文件加载遵循特定的优先级规则:从classpath:/config/开始,依次是file:./config/、classpath:/、file:./,且越靠前的路径优先级越高。
配置文件的生效依赖于ApplicationListener实现类,如ConfigFileApplicationListener,它监听ApplicationEnvironmentPreparedEvent事件。当项目启动时,会从spring.factories文件中加载并实例化这些监听器,如ConfigFileApplicationListener负责加载配置文件。
启动过程中的关键步骤包括:首先,从spring.factories中获取监听器,如EventPublishingRunListener,然后通过事件广播机制触发加载配置文件的步骤。当遇到ApplicationEnvironmentPreparedEvent时,ConfigFileApplicationListener的load方法开始检索配置文件,优先级高的配置文件会覆盖低的。
加载过程涉及PropertySourceLoader,如PropertiesPropertySourceLoader和YamlPropertySourceLoader,它们根据文件扩展名(properties或yaml)检索并加载配置。具体操作包括读取配置文件、解析键值对,然后以Document对象的形式返回给上层处理。
总结来说,SpringBoot的全局配置文件加载是一个从配置文件路径查找、内容读取、解析到加载的完整流程,确保项目的配置能够在启动时正确生效。
PyYAML官方教程
PyYAML是Python的一个YAML解析器和发射器。
安装
简单安装,从源代码安装,请下载源代码包PyYAML-5.1.tar.gz并进行解压。转到目录PyYAML-5.1,运行安装命令。若需使用比纯Python版本快的LibYAML绑定,则需下载并安装 LibYAML。运行安装命令以使用基于LibYAML的解析器和发射器。注意,纯Python和基于LibYAML的解析器和发射器之间存在细微差异。
常见问题解答
未正确转储的词典没有嵌套集合。这是正确的输出,尽管嵌套映射的样式不同。默认情况下,PyYAML选择集合的样式,如果集合具有嵌套集合则为块样式,否则为流样式。若希望始终以块样式序列化集合,请将dump()的参数default_flow_style设置为False。
Python 3支持从3.版本开始,PyYAML和LibYAML绑定为Python3提供完整支持。这是PyYAML API在Python 2和Python 3版本之间的差异的简短概述。
教程
从导入yaml包开始。加载YAML使用yaml.load或yaml.safe_load函数。yaml.load将YAML文档转换为Python对象。yaml.safe_load限制了构造任意Python对象的能力,仅允许简单的Python对象如整数或列表。python对象可以被标记为安全,以便被yaml.safe_load识别。导出YAML使用yaml.dump函数。pyyaml支持多种关键字参数以指定发射器的格式细节。
Constructors, representers, resolvers
定义应用程序特定标签。最简单的方法是定义yaml.YAMLObject的子类。yaml.YAMLObject使用元类魔术注册Constructors和Representers。如果你不想使用元类,可以使用函数yaml.add_constructor和yaml.add_represent注册Constructors和Representers。例如,为Dice类添加一个Constructor和一个Representer。
YAML语法
YAML语法介绍在YAML规范的第2章。查看YAML cookbook,专注于Ruby实现,并使用旧的YAML1.0语法。在这里,将介绍最常见的YAML构造以及相应的Python对象。文档是零个或多个文档的集合。Block序列和Block映射分别由-和:表示。Flow集合语法与Python中列表和字典构造函数的语法相似。标量有5种样式:plain、单引号、双引号、literal和折叠。
Aliases别名
使用YAML表示任意图形结构的对象。需要从文档的不同部分引用同一对象时,使用锚点和别名。PyYAML现在完全支持递归对象。
Tags标签
用于表示YAML节点的类型。标准YAML标签定义于yaml.org/type/index.htm...。标签可能是隐含的或显式的。没有显式定义标记的plain标量受到隐式标记解析的约束。
YAML标记和Python类型
下表描述了如何将具有不同标记的节点转换为Python对象。在Python 3中,str对象被转换为!!str标量、bytes对象被转换为!!binary标量。出于兼容性原因,标记!!python/str和!!python/unicode仍然受支持,并转换为str对象。为了表示静态Python对象,使用复杂的!!python/name标记。例如,函数yaml.dump表示为!python/name:yaml.dump。类似地,模块使用标记表示!python/module。