【文件操作、目录操作】-覆盖: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

相关新闻

Python版本选择指南:从3.8到3.12的决策框架与多版本管理实践

Python版本选择指南:从3.8到3.12的决策框架与多版本管理实践

1. 版本选择的底层逻辑:稳定、兼容与生态的三角博弈 每次打开Python官网,看到下载页面上那一长串版本号,从3.7到3.13,甚至还有3.14的预览版,很多刚入门的朋友都会瞬间懵圈。到底该装哪个?是追新用最新的3.1…

2026/10/18 18:20:43 阅读更多 →
定制你的PHP运行时:魔改发行版架构设计与源码剖析

定制你的PHP运行时:魔改发行版架构设计与源码剖析

定制你的 PHP 运行时:魔改发行版——架构设计与源码剖析这是把你前 25 个阶段做的事情工程化、产品化:不再是一次性改一个函数,而是造一个"针对你自己项目的专属 PHP 发行版"。就像RedHat 之于内核、Tideways/Blackfire 之于 PHP—…

2026/10/17 7:12:53 阅读更多 →
Adobe破解工具终极选择:Adobe-GenP 3.0一次修补,让PS、PR全家桶零成本免费用

Adobe破解工具终极选择:Adobe-GenP 3.0一次修补,让PS、PR全家桶零成本免费用

Adobe破解工具终极选择:Adobe-GenP 3.0一次修补,让PS、PR全家桶零成本免费用 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 凌晨一点&#…

2026/10/16 9:34:52 阅读更多 →

最新新闻

n8n CVE-2025-68668漏洞应急响应:24小时处置手册与安全加固指南

n8n CVE-2025-68668漏洞应急响应:24小时处置手册与安全加固指南

半夜被监控告警拉起来,说是生产环境的 n8n 实例正在被人疯狂拉取执行历史。第一反应是有人在调试,再看告警频率,明显是扫描器在批量探测。顺着源 IP 和请求路径追下去,确认是对 CVE-2025-68668 的自动化利用。这个漏洞今天在自动化…

2026/10/18 18:21:56 阅读更多 →
Run ‘conda init‘ before ‘conda activate‘ 报错最全解决办法:从 PowerShell 到 TaoToken 配置排查

Run ‘conda init‘ before ‘conda activate‘ 报错最全解决办法:从 PowerShell 到 TaoToken 配置排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 18:21:56 阅读更多 →
Zed 新特性:AI 还在跑,电脑可以不睡了——用 TaoToken 统一 Key 打通 GPUI 编辑器 AI 工作流

Zed 新特性:AI 还在跑,电脑可以不睡了——用 TaoToken 统一 Key 打通 GPUI 编辑器 AI 工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 18:21:56 阅读更多 →
Claude Code 知识工作插件实战:从安装到自定义 slash command

Claude Code 知识工作插件实战:从安装到自定义 slash command

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为是某个笔记软件的插件合集,或者某个知识管理工具的扩展包。实际上,它是一套面向 Claude Code 和 Claude Cowork …

2026/10/18 18:21:56 阅读更多 →
Cesium for UE4坐标系转换全解析:从经纬高到UE4世界坐标

Cesium for UE4坐标系转换全解析:从经纬高到UE4世界坐标

1. 为什么坐标系是Cesium for UE4的第一道坎刚接触Cesium for UE4的人,十有八九会在坐标系上栽跟头。你兴冲冲地把一个倾斜摄影模型或者点云数据拖进UE4场景,结果发现模型要么飘在离原点几万公里外的地方,要么小得跟蚂蚁一样,要么…

2026/10/18 18:21:56 阅读更多 →
分数阶系统辨识:从Caputo算子到嵌入式C实现

分数阶系统辨识:从Caputo算子到嵌入式C实现

简介:本资源是一套面向控制工程、信号处理及系统建模方向研究者与高年级本科生/研究生的分数阶模型辨识实践代码包,聚焦解决传统整数阶模型难以刻画系统记忆性与遗传特性的核心问题。压缩包共495个文件(2.77MB),以179个…

2026/10/18 18:20:56 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →