python处理yaml、ini和execl文件

news2024/12/29 9:15:43

一、yaml的初步了解

YAML 是一个被广泛使用的数据序列化和配置语言,后缀可以为yaml或yml, 支持#注释,通过缩进表示层级,区分大小写,读取出来之后是一个字典列表
yaml 的用途:

  • 用于做配置文件 (yaml )
    在k8s集群中要使用kubectl部署一个应用,哪些应用都使用的yaml格式的文件
  • 用于编写自动化测试用例

yaml的数据组成:

  • map对象, 键:(空格)值
name: 晴雯
  • 数组(list),用‘’-‘’表示列表
mylist:
  - name1: 李白
  - name2: 杜甫
  - age:
      - libai: 55
      - dufu: 56

二、在python中处理yaml文件

1、用面向对象方法,将yaml的处理封装起来,在其他模块就可以直接使用
导入yaml库

import json
import random
import re
import yaml

class YamlUtil:
    '''
    本类是操作yaml文件的一些方法,包括读写,和解析yaml 中的随机数字和随机字符串
    '''

2、写一个读yaml的方法,该方法只读取只含有键值对的yaml,根据关键字读取出值,如:

name: 黛玉
age: 16
def read_simple_yaml(self,path,key):
        '''
        读取简单的yaml文件,只有键值对的,根据key返回值
        :param path: yaml文件路径
        :param key: 要查找的key值
        :return: 返回key对应的value值
        '''
        with open(path,mode='r',encoding='utf-8') as f:
            value = yaml.load(stream=f,Loader=yaml.FullLoader)
            return value[key]

3、这也是一个读取yaml的方法,改方法读取的是包含嵌套的yaml文件,一直把整个yaml内容都读取出来。如:

mylist:
  - name1: 李白
  - name2: 杜甫
  - age:
      - libai: 55
      - dufu: 56
def read_complex_yaml(self,path):
        '''
        读取复杂的yaml文件类容,比如有嵌套的,直接返回列表
        :param path: yaml文件的路径
        :return: 返回读取到的yaml内容
        '''
        try:
            with open(path,mode='r',encoding='utf-8') as f:
                value = yaml.load(stream=f,Loader=yaml.FullLoader)
                return value
        except:
            print("No such file or directory")

4、将内容写入到yaml中。

def write_yaml(self,path,data,mode=None):
        '''
        :param path: yaml文件路径
        :param data: 要写入yaml文件的数据
        :param mode: 写入的模式,不传默认是追加
        :return: 无返回值
        '''
        try:
            if mode == None:
                mode='a'
            else:
                mode = mode
            with open(path,mode=mode,encoding='utf-8') as f:
                yaml.dump(data=data,stream=f,allow_unicode=True)
        except:
            print("No such file or directory")

5、清空yaml的方法

def clear_yaml(self,path):
        '''
        清空yaml文件
        :param path: 要清空的yaml文件路径
        :return: 无返回值
        '''
        try:
            with open(path,mode='w',encoding='utf-8') as f:
                f.truncate()
        except:
            print("No such file or directory")

三:读写ini的文件

配置文件以ini结尾,如下图在这里插入图片描述
在这里插入图片描述
处理ini文件需要导入configparser
1、初始化对象,初始化给文件路径和要读取那个节点的,文件路径给了默认值,如果没有穿就去读默认的文件

#coding=utf-8
import configparser

class ReadIni(object):
    def __init__(self,file_name=None,node=None):
        if file_name == None:
            file_name = "F:\myfile\python\code\seleniumpython\config\LocalElement.ini"
        if node == None:
            self.node = "RegisterElement"
        else:
            self.node = node
        self.cf = self.load_ini(file_name)

2、加载文件

#加载文件
    def load_ini(self,file_name):
        cf = configparser.ConfigParser()
        cf.read(file_name)
        return cf

3、获取value值

 #获取value得值
    def get_value(self,key):
        data = self.cf.get(self.node,key)
        return data

四、处理execl文件

处理execl文件需要用到xlrd、xlutils.copy
1、初始化对象,传入文件路径,和index

#--coding:utf-8--

import xlrd
from xlutils.copy import copy
import time

class ExeclUtil(object):
	'''读取execl内容'''
	def __init__(self,file_path = None,index = None):
		self.file_path = file_path
		if self.file_path == None:
			self.file_path = "F:\\myfile\\python\\code\\selenium_project\\config\\casedata.xls"
		if index == None:
			index = 0
		self.data = xlrd.open_workbook(self.file_path)
		self.table = self.data.sheets()[index]

2、获取表中的数据,返回结果

def get_data(self):
		'''将表格中的数据读入到一个list中'''
		results = []
		rows = self.get_rows()
		if rows != None:
			for i in xrange(rows):
				col = self.table.row_values(i)
				results.append(col)
			return results
		else:
			return None

3、获取表中的行数

def get_rows(self):
		'''获取execl行数'''
		rows = self.table.nrows
		if rows >= 1:
			return rows 
		else:
			return None

4、获取单元格的数据

ef get_col_value(self,row,col):
		'''获取单元格数据'''
		if self.get_rows() > row:
			data = self.table.cell(row,col).value
			return data
		else:
			return None

5、给单元格写入数据

def write_value(self,row,col,value):
		'''给单元格写入数据'''
		read_value = xlrd.open_workbook(self.file_path)
		write_data = copy(read_value)
		write_data.get_sheet(0).write(row,col,value)
		write_data.save(self.file_path)
		time.sleep(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十八天 18/50【层序遍历二叉树(两个队列一个遍历上一层,一个记录下一层)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

数字虚拟人物制作为多个行业中的智能应用场景赋能

虚拟人物制作的广义定义为数字化外形的虚拟人物,是“虚拟”(存在于非物理世界中)“数字”(由计算机图形学、图形染、动作捕捉、深度学习、语音合成等计算机手段创造及使用)“人”(具有多重人类特征,如外貌、人类表演/交互能力等)的综合产物。 制作一个虚…

Hbase drop 表卡住没有响应

在实际工作中遇到过重新创建一个hbase的hive外部表,在 disable table_name; drop table_name 在drop table_name卡住 最后有提示报错。 建议各位查看下表有无lock的情况, 查看和释放hbase lock可以通过如下方式来查看 pid获取: 在 Ma…

idea支持vue文件-设置对vue的支持

一、idea支持.vue文件 这一步其实就是安装vue.js插件,具体路径为:File ----> Settings ----> Plugins ----> 输入vue,点击搜索结果里的vue.js右边的install按钮,安装成功后重启idea,这样idea就能识别.vue文件…

惨痛面经,做个记录

今天的行情太难了,找工作的还是比较艰难的一个过程。不和哪些优秀的人对比,我就是普通二本院校,工作4年,能力一般般,努力奋斗的一个搬砖人。分享一个月比较惨痛的找工作经历。 简历这一块自己准备的时间比较长&#xf…

争夺数据黑匣子市场,谁将接盘这家Tier1的被动安全业务

在相继卖掉智驾软件算法资产(高通收购)、主动安全传感器及系统业务(麦格纳收购)后,Veoneer最后剩余的被动安全系统业务(主要是安全气囊ECU)也在寻找产业买家。 本周,美国私募股权公司…

Docker Swarm安装PXC高可用集群

docker安装PXC集群 创建数据卷创建集群专用网络创建证书 主流mysql高可用的方式有以下几种 准备三台服务器 hostIP说明node1192.168.31.130PXC集群1node2192.168.31.131PXC集群2node3192.168.31.132PXC集群3 创建docker swarm集群 主节点node1执行 #docker swarm init --ad…

Camera API2 使用说明

CameraAPI1 使用说明 目录 一、 概览 1.1 Pipeline 1.2 Supported Hardware Level 1.3 Capture 1.4 CameraManager 1.5 CameraCharacteristics 1.6 CameraDevice 1.7 Surface 1.8 CameraCaptureSession 1.9 CaptureRequest 1.10 CaptureResult 1.11 一些只有 Came…

基于 Arduino 库实现 ESP32 TCP Server 应用例程

实现步骤&#xff1a; ESP32 开启 WiFi Station 模式连接路由器连上路由器后将获取到分配的 IP 地址基于分配的 IP 地址创建 TCP Server 测试代码如下&#xff1a; #include <WiFi.h> #include <WiFiClient.h>const char* ssid "cc2.4"; const char*…

《水经注地图服务》发布的影像数据在ArcMap中调用

当有用户需要发布一个省以上的海量卫星影像数据时&#xff0c;我们就会强烈建议他使用《水经注地图服务》&#xff08;WeServer&#xff09;进行发布。 因为&#xff0c;《水经注地图服务》在经过我们工程师的不断升级优化之后&#xff0c;现在发布全球100TB级卫星影像数据所需…

【用户调研】需求挖掘

文章目录 用户需求的定义为什么要挖掘用户需求需求挖掘方法用户访谈问卷调查可用性测试运营数据分析 用户访谈介绍实地研究用户观察用户访谈焦点小组 调查问卷介绍总结 用户需求的定义 为什么要挖掘用户需求 需求挖掘方法 用户访谈 问卷调查 可用性测试 运营数据分析 用户访谈介…

妙记多 Mojidoc PC端(Mac+Windows 端)内测体验官招募!

你们呼唤了无数呼唤的妙记多 Mojidoc 客户端来了&#xff01; 优先内测上线的是 桌面端&#xff01;包含 Mac端 和 Windows 端 为了更好的用户体验&#xff0c;小 Mojidoc 在上线前邀请大家一起加入内测体验&#xff01; 为了让你更好的成为内测体验官&#xff0c;有一点心里…

使用adb工具通过wifi连接安卓设备

一、下载adb包&#xff0c;并解压。网上很多地方可以下载资源或者从我的网盘下载 链接&#xff1a;https://pan.baidu.com/s/1hLf14wCCUMs2xdU5WkLY8g 提取码&#xff1a;8cbh 二、安卓设备打开开发者选项&#xff0c;打开USB调试开关 三、确保手机和wifi在同一个wifi网路下。…

SSM学习笔记-------SpringMVC(二)

SSM学习笔记-------SpringMVC&#xff08;二&#xff09; SpringMVC_day021、SSM整合1.1 流程分析1.2 整合配置步骤1&#xff1a;创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步…

QT中LIBS的配置

QT中引用外部第3方库时&#xff0c;需要配置LIBS参数。 QT选择kit时有MSVC、MinGW两种方式&#xff0c;一般MSVC的静态库文件以.lib结尾&#xff0c;MinGW以.a结尾。什么是C的静态库、动态库我这里就不介绍了&#xff0c;其实这种库在几乎所有的语言中都有&#xff1a;比如jav…

用android studio 测试发行包

在google play 发行app&#xff0c;需要用bundle&#xff0c;而不是apk。 bundle 比apk 要小很多&#xff0c;比如我的app-release.aab 29,736 KB&#xff0c; 而app-release.apk 是62,305KB。这就是少了一半多。但是apk 直接复制就可以安装&#xff0c;bundle 需要上传google…

研究讯飞星火模型的时候,使用websocket的一个总结

接受数据 <?php header("Content-Type:text/html;charsetutf-8");//确保在连接客户端时不会超时set_time_limit(0);//设置IP和端口号$address "wss://tts-api.xfyun.cn/v2/tts?authorizationYXBpX2tleT0iNDE4ZjJjOTI2NTY0YTc1ZDNjMmE5NDliMTE0MzRkZTYiLCB…

回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现WOA-GCNN鲸鱼…

三足鼎立的SIEM、SOAR和XDR

如今&#xff0c;变化的安全挑战、多态的IT架构、复杂的建设需求、严苛的合规审查……&#xff0c;甲方心力交瘁&#xff0c;乙方疲于奔命。传统安全产品交付模式&#xff0c;投入大、成本高、难维护、效果差&#xff0c;完全无法应对。 网络攻击的增长导致合规要求更加严格。…

经典目标检测算法模型总结汇总

这里主要是想要记录汇总一下平时有意无意查资料、学习等了解查阅的目标检测领域中各种模型的原理、优点缺点等内容&#xff0c;主要是方便温故知新&#xff0c;也希望能帮到需要的人。 目标检测任务涌现了很多经典的模型&#xff0c;下面是一个模型的总结记录。 (1)R-CNN&…