python excel和yaml文件的读取封装


Posted in Python onJanuary 12, 2021

excel

import os
import xlrd


PATH = lambda p: os.path.abspath(
  os.path.join(os.path.dirname(__file__), p)
)


class ExcelData:
  def __init__(self, file, sheet="sheet1", title=True):
    # 判断文件存在不存在
    if os.path.isfile(PATH(file)):
      self.file = PATH(file)
      self.sheet = sheet
      self.title = title
      self.data = list()
      self.workbook = xlrd.open_workbook(self.file)
    else:
      raise FileNotFoundError("文件不存在")

  @property
  def get_data(self):
    """获取表格数据"""
    if not self.data:
      # 判断表单名称
      if type(self.sheet) not in [int, str]:
        raise Exception("表单名称类型错误")
      else:
        if type(self.sheet) == int:
          book = self.workbook.sheet_by_index(self.sheet)
        else:
          book = self.workbook.sheet_by_name(self.sheet)
      # 判断表格是否有表头,有则输出列表嵌套字典形式数据,否则输入列表嵌套列表形式数据
      if self.title:
        title = book.row_values(0)
        for i in range(1, book.nrows):
          self.data.append(dict(zip(title, book.row_values(i))))  # 可参考字典章节
      else:
        for i in range(book.nrows):
          self.data.append(book.row_values(i))
    return self.data

  @property
  def get_sheets(self):
    """获取所有表单,这个在后续会用到"""
    book = self.workbook.sheets()
    return book

调用操作

infos = ExcelData("htmls/测试用例.xlsx", "登入页面", True).get_data
print(infos)

sheets = ExcelData("htmls/测试用例.xlsx").get_sheets
print(sheets)

python excel和yaml文件的读取封装

yaml

import os
import yaml
from yamlinclude import YamlIncludeConstructor

YamlIncludeConstructor.add_to_loader_class(loader_class=yaml.FullLoader)  # 用于yaml文件嵌套

PATH = lambda p: os.path.abspath(os.path.join(
  os.path.dirname(__file__), p
))


class YamlData:
  def __init__(self, file):
    if os.path.isfile(PATH(file)):
      self.file = PATH(file)
    else:
      raise FileNotFoundError("文件不存在")

  @property # 设置属性,调用data方法时可通过调用属性,不需要带括号
  def data(self):
    with open(file=self.file, mode="rb") as f:
      infos = yaml.load(f, Loader=yaml.FullLoader)
      # infos = yaml.load(f)
    return infos

调用操作

infos = YamlData("htmls/loginsucess.yaml").data
print(infos)
"D:\Program Files\Python\Python37-32\python.exe" D:/demo/yamldata.py
{'id': 'login_001', 'module': '登入页面', 'title': '登入时账号为空', 'message': '已打开链接', 'testcase': [{'element_info': 'css->[placeholder="请输入账号"]', 'operate_type': 'send_keys', 'keys': 'SSSS', 'info': '点击账号输入框,输入账号'}, {'element_info': 'css->[placeholder="请输入密码"]', 'operate_type': 'send_keys', 'keys': 'XXX', 'info': '点击密码输入框,输入密码'}, {'element_info': 'div->"登 录"', 'operate_type': 'click', 'info': '点击登入菜单'}, {'operate_type': 'is_sleep', 'keys': 3, 'info': '等待进入'}], 'check': None}

Process finished with exit code 0

以上就是python excel和yaml文件的读取与封装的详细内容,更多关于python 文件读取与封装的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 自动安装 Rising 杀毒软件
Apr 24 Python
用Python编写一个国际象棋AI程序
Nov 28 Python
python中异常报错处理方法汇总
Nov 20 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
python爬虫增加访问量的方法
Aug 22 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
pytorch forward两个参数实例
Jan 17 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
重写django的model下的objects模型管理器方式
May 15 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
详解python的内存分配机制
May 10 Python
python 如何执行控制台命令与操作剪切板
May 20 Python
python drf各类组件的用法和作用
Jan 12 #Python
Python try except else使用详解
Jan 12 #Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 #Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 #Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 #Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 #Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 #Python
You might like
世界上第一台立体声收音机
2021/03/01 无线电
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
初学Python函数的笔记整理
2015/04/07 Python
python中列表元素连接方法join用法实例
2015/04/07 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python线性方程组求解运算示例
2018/01/17 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
模具专业毕业生自荐书范文
2014/02/19 职场文书
工程质量月活动方案
2014/02/19 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android