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解决字典中的值是列表问题的方法
Mar 04 Python
Python线程指南详细介绍
Jan 05 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
numpy matrix和array的乘和加实例
Jun 28 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Python提取频域特征知识点浅析
Mar 04 Python
Python实现微信翻译机器人的方法
Aug 13 Python
django使用xadmin的全局配置详解
Nov 15 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
selenium自动化测试入门实战
Dec 21 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
利用js对象弹出一个层
2008/03/26 Javascript
Javascript 解疑
2009/11/11 Javascript
js中判断控件是否存在
2010/08/25 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
python打包成so文件过程解析
2019/09/28 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
中学老师的自我评价
2013/11/07 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
证婚人致辞精选
2015/07/28 职场文书
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python