【文件操作、目录操作】-覆盖:ini文件、yaml/yml文件、excel文件、json文件的python操作封装

发布时间:2026/8/17 15:36:08

【文件操作、目录操作】-覆盖:ini文件、yaml/yml文件、excel文件、json文件的python操作封装
python之文件读写、目录操作、序列化str操作后写入文档、xml模块、configparser模块关于常见文档格式的操作封装一 .ini文件的操作类二 .yaml文件的操作类三 .excel文件的操作类 xlrd1.2.0版本才有好的支持最新的支持不好四、 pandas 读取excel文件五、 json文件的操作类一 .ini文件的操作类# -*- coding:utf-8 -*-# Time: 2021/5/21 11:07# Author: 华# File: operate_ini.py# Software: PyCharmimportdataimportconfigparserclassGetConfig: 封装一个类进行ini文件的常用操作 def__init__(self,filepathos.path.dirname(os.path.dirname(os.path.abspath(__file__)))):self._pathfilepathr/data/globalconfig.iniprint(self._path)self.configconfigparser.ConfigParser()# 实例化解析对象self.config.read(self._path,encodingutf-8)# 读文件defget_sections(self): 获取ini文件所有的块返回为list sectself.config.sections()returnsectdefget_options(self,sec): 获取ini文件指定块的项 :param sec: 传入的块名 :return: 返回指定块的项列表形式 returnself.config.options(sec)defget_items(self,sec): 获取指定section的所有键值对 :param sec: 传入的块名 :return: section的所有键值对元组形式 returnself.config.items(sec)defget_option(self,sec,opt): 获取指定 小项 的值 :param sec: 传入的块名 :param opt: 传入项 :return: 返回项的值(string类型) returnself.config.get(sec,opt)defwrite_(self): 将修改后写入文件 withopen(self._path,w)asfp:self.config.write(fp)defadd_section_(self,sec): 为ini文件添加新的section, 如果section 已经存在则抛出异常 :param sec: 传入的块名 :return: None self.config.add_section(sec)self.write_()defset_option(self,sec,opt,value): 对指定section下的某个option赋值 :param sec: 传入的块名 :param opt: 传入的项名 :param value: 传入的值 :return: None self.config.set(sec,opt,value)self.write_()# 写入文件defremove_sec(self,sec): 删除某个section :param sec: 传入的块名 :return: bool self.config.remove_section(sec)self.write_()# 写入文件defremove_opt(self,sec,opt): 删除某个section下的某个option :param sec: 传入的块名 :param opt: 传入的项名 :return: bool self.config.remove_option(sec,opt)self.write_()# 写入文件二 .yaml文件的操作类# -*- coding:utf-8 -*-# Time: 2021/7/5 10:26# Author: 华# File: Operation_yaml.py# Software: PyCharm备注示例的demo.yaml文件 test:it:ot:daihua# 下面是代码封装# 注意# pip install pyyamlimportyamlclassYamlOperation(dict):继承dict的类拥有dict的特性def__init__(self,file_pathNone,contentNone):super().__init__()iffile_pathisnotNone:withopen(file_path,r,encodingUTF-8)asfile:contentyaml.load(file,Loaderyaml.SafeLoader)# todo: 将yaml文件中读取的所有的key设置为类的属性contentcontentifcontentisnotNoneelse{}forkey,valueincontent.items():print(key)print(value)ifisinstance(value,dict):self[key]YamlOperation(contentvalue)else:self[key]valuedef__getattr__(self,key):访问不存在的属性key时返回NonereturnNonedef__setattr__(self,key,value):设置实例属性值self[key]valuedef__setitem__(self,key,value):给self[key]赋值super().__setattr__(key,value)super().__setitem__(key,value)def__missing__(self,key):访问的键key不存在时返回NonereturnNoneif__name____main__:importos dataYamlOperation(os.getcwd()/demo.yaml)print(data.test)# 输出{it: {ot: daihua}}print(data[test])# 输出{it: {ot: daihua}}print(data.get(test))# 输出{it: {ot: daihua}}print(data.test.it.ot)# 输出daihuaprint(data.it)# 调用__getattr__ 返回Noneprint(data[it])# 调用__missing__ 返回None三 .excel文件的操作类 xlrd1.2.0版本才有好的支持最新的支持不好# -*- coding:utf-8 -*-# Time: 2021/5/12 13:44# Author: 华# File: operate_excel.py# Software: PyCharmimportxlrd# 这里的版本1.2.0才支持.xlsfromxlutils.copyimportcopyimportdataclassOperationExcel(): 操作excel获取excel表格中的包括每一个单元格的数据如testapi中的url\headers\method def__init__(self,filepathdata.data_path\\interface.xlsx,sheet_id0): OperationExcel类初始化顺带获取了self.data,即指定sheet的所有数据 :param filepath:数据来源的文件地址 :param sheet_id:excel表单号sheet_id从0开始 self.filepathfilepath self.sheet_idsheet_id self.dataself.get_data()defget_data(self): 获取整个sheet表单对象 :return:table,即表单数据,是一个对象 dataxlrd.open_workbook(self.filepath)tabledata.sheets()[self.sheet_id]returntabledefget_lines(self): 获取sheet的内容所占用的行数 :return:self.lines行数加入类的属性供全局使用 self.linesself.data.nrowsreturnself.linesdefget_cell_value(self,row,column): 获取某一个单元格的内容 :param row: 行数,从0开始 :param column: 列数从0开始 :return: self.cell_value单元格值加入类的属性供全局使用 self.cell_valueself.data.cell_value(row,column)returnself.cell_valuedefwrite_cell_value(self,row,column,value): 写入单元格内容 :param row: 行数,从0开始 :param column: 列数从0开始 :param value:需要写入的data :return:None read_dataxlrd.open_workbook(self.filepath)write_datacopy(read_data)sheet_datawrite_data.get_sheet(self.sheet_id)sheet_data.write(row,column,value)write_data.save(self.filepath)defget_row_data(self,case_id): 根据caseid,找到对应用例所在行的内容 :param case_id:在本套代码中即表示excel中的api数据的ID :return:row_data用例行数据 row_numself.get_row_num(case_id)row_dataself.get_row_values(row_num)returnrow_datadefget_row_num(self,case_id): 根据case_id找到对应用例的行的行所在的索引号行号 主要方式循环遍历id列的值只要等于入参即返回循环的次数即为行的index :param case_id: :return: row_num0cols_dataself.get_col_data()#默认获取column0的列数据return数据为list类型forcol_dataincols_data:ifcase_idincol_data:returnrow_num row_numrow_num1defget_row_values(self,row): 根据行号row找到该行的内容 :param row: 行数,从0开始 :return: row_data,行数据list类型 row_dataself.data.row_values(row)returnrow_datadefget_col_data(self,column0): 根据列column获取某一列的内容 :param column: 列数从0开始 :return: col_data,列数据list类型 col_dataself.data.col_values(column)returncol_datadefget_excel_data(self): 获取excel里面的所有的数据,[],ddt的时候使用 :return: list fields_val_list[]# 这里从index1开始因为首行是表头不是请求数据foriinrange(1,self.get_lines()):fields_val_list.append(self.get_row_values(i))returnfields_val_listif__name____main__:# 示例获取默认表单对象# tab OperationExcel(sheet_id1).get_data()# print(tab)# 示例读取非sheet_id0的单元格数据dtOperationExcel(sheet_id1).get_cell_value(1,1)print(dt)四、 pandas 读取excel文件importpandasaspdimportopenpyxlclassOperationExcel(): 操作excel获取excel表格中的包括每一个单元格的数据如testapi中的url\headers\method def__init__(self,filepathNone): OperationExcel类初始化顺带获取了self.data,即指定sheet的所有数据 :param filepath:数据来源的文件地址 :param sheet_id:excel表单号sheet_id从0开始 self.filepathfilepath dtpd.read_excel(self.filepath)self.dfpd.DataFrame(dt)defget_rows_data(self,start_row,end_row): 获取多行数据 :return: returnself.df.loc[start_row:end_row]defget_cell_data(self,row_index,column_name): 获取某个单元格数据 :return: returnself.df.loc[row_index,column_name]if__name____main__:# 示例获取默认表单对象# tab OperationExcel(sheet_id1).get_data()# print(tab)# 示例读取非sheet_id0的单元格数据dtOperationExcel(filepathrD:\project\py_project\cgjgui\data\ele\elex.xls)# print(dt.get_rows_data(1, 2))print(dt.get_cell_data(1,description))五、 json文件的操作类Python接口自动化-简单总结包含excel/json操作封装、request的封装# coding:utf-8# Time : 2026/8/16 09:49# Author : ithing# FileName: json_operation.pyimportjsonclassOperationJson(): 操作json文件 def__init__(self,surce_path../resources/data/session.json):self.surce_pathsurce_path self.dataself.read_data()# 读取json文件defread_data(self):try:withopen(self.surce_path,r,encodingutf-8)asfp:datajson.load(fp)exceptExceptionase:data{error:文件读取错误}finally:returndata# 根据关键字获取数据defget_data(self,key):ifkeyinself.data:returnself.data[key]else:return%s对应的值不存在%key# 写jsondefwrite_data(self,value):try:withopen(self.surce_path,w,encodingutf-8)asfp:fp.write(json.dumps(value,ensure_asciiFalse,indent4))# indent 缩进ensure_asciiFalse: 不转义中文res写入成功exceptExceptionase:res写入错误请排查数据类型、关键字等,efinally:returnres

相关新闻

卫星变轨技术全解析:从推进系统到轨道力学实战

卫星变轨技术全解析:从推进系统到轨道力学实战

2026/8/17 15:26:08

1. 从“固定轨道”到“灵活机动”:卫星变轨的底层逻辑很多人以为卫星一旦被火箭送入太空,就会像被设定好的钟表一样,永远在同一个轨道上运行。这个印象对,但也不全对。对,是因为大部分卫星确实在长期执行任务时&#x…

C#字符串分割深度解析:从Split到Regex的高效实践与避坑指南

C#字符串分割深度解析:从Split到Regex的高效实践与避坑指南

2026/8/17 15:26:08

1. 从“一刀切”到“庖丁解牛”:C#字符串分割的深度认知 刚接触C#那会儿,处理字符串分割,脑子里就一个词: Split 。这玩意儿多简单啊,给个分隔符, string[] result str.Split(‘,’) ,齐活…

基于Takens定理的EEG相空间重构:理论全推导、参数优选(τ/m)与工程落地细则

基于Takens定理的EEG相空间重构:理论全推导、参数优选(τ/m)与工程落地细则

2026/8/17 15:26:08

基于Takens定理的EEG相空间重构:理论全推导、参数优选(τ/m)与工程落地细则 作者:方见华 单位:世毫九实验室 前言 本文完全针对含噪、非平稳、非线性的EEG脑电时序数据,系统性完成:Takens嵌入定…

Flask框架入门指南:从零构建Python Web应用与API开发

Flask框架入门指南:从零构建Python Web应用与API开发

2026/8/17 16:46:12

1. 从零到一:为什么是Flask,以及它到底能做什么?如果你刚接触Python,想找个东西快速做个网站、API接口,或者搞个内部管理工具,大概率会听到“Flask”这个名字。它就像一个工具箱,里面只有最核心…

Docker容器技术入门:从核心概念到实战部署全解析

Docker容器技术入门:从核心概念到实战部署全解析

2026/8/17 16:46:12

1. 从“虚拟机”到“容器”:为什么Docker是开发者的新宠如果你和我一样,在职业生涯早期接触服务器部署,大概率是从一台台笨重的虚拟机开始的。那时候,为了部署一个简单的Web应用,你需要先装一个VMware或者VirtualBox&a…

Samba权限控制深度解析:从匿名访问到多场景共享配置实战

Samba权限控制深度解析:从匿名访问到多场景共享配置实战

2026/8/17 16:46:12

1. 项目概述:为什么Samba权限控制是共享服务的核心在任何一个需要跨平台文件共享的环境里,Samba都是一个绕不开的名字。它让Linux/Unix服务器能够无缝地融入Windows网络,成为一台“文件服务器”。但很多朋友在初次配置Samba时,往往…

[Dify] 本地部署后连不上 Ollama?先查地址、模型名、网络边界和超时位置

[Dify] 本地部署后连不上 Ollama?先查地址、模型名、网络边界和超时位置

2026/8/17 16:46:11

Dify 本地部署本身不算难,真正容易卡住的是“页面能打开,但模型就是连不上”。很多人会把问题归因到 Dify 安装失败,或者怀疑 Ollama 模型不能用,但实际排查时常见原因往往更具体:Ollama 服务只监听在宿主机本地地址、Dify 容器访问不到 127.0.0.1:11434、模型名和 ollama…

数模国赛C题四大核心模块:相关性分析、3D图像、拟合插值与优化算法实战指南

数模国赛C题四大核心模块:相关性分析、3D图像、拟合插值与优化算法实战指南

2026/8/17 16:46:11

最近在准备数学建模国赛的同学,尤其是瞄准C题的队伍,普遍反映一个痛点:题目涉及的知识模块多且杂,从数据处理到模型构建,再到算法实现,每个环节都可能成为“拦路虎”。网上资料虽多,但往往不成体…

华为IPD流程各阶段370个活动详解-(一) 概念阶段流程与活动

华为IPD流程各阶段370个活动详解-(一) 概念阶段流程与活动

2026/8/17 16:36:11

华为IPD流程涵盖了产品从概念到上市的完整过程,各阶段活动明确且相互衔接。在概念启动阶段,产品经理和项目经理分析可行性,PAC评审后成立PDT。概念阶段则包括产品描述、市场定位、投资期望等内容的确定,同时组建PDT核心组并准备项目环境。团队培训涵盖团队建设、流程、业务…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/17 1:28:42

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/16 0:04:13

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/17 8:40:51

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

2026/8/17 0:05:22

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

2026/8/17 0:05:22

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

2026/8/17 0:05:22

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/14 19:35:14

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…