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中黄金分割法实现方法
May 06 Python
TensorFlow数据输入的方法示例
Jun 19 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
简单谈谈python基本数据类型
Sep 26 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python web如何在IIS发布应用过程解析
May 27 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
Jun 02 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
Python入门学习之类的相关知识总结
May 25 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
Thinkphp开发--集成极光推送
2017/09/15 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
Python基础入门之seed()方法的使用
2015/05/15 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
什么是跨站脚本攻击
2014/12/11 面试题
室内设计专业个人的自我评价
2013/12/18 职场文书
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
刑事撤诉申请书
2015/05/18 职场文书
回复函范文
2015/07/14 职场文书
个人工作决心书
2015/09/22 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python