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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
详解python实现交叉验证法与留出法
Jul 11 Python
python支付宝支付示例详解
Aug 22 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
python随机打印成绩排名表
Jun 23 Python
Python OpenCV实现图像模板匹配详解
Apr 07 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
通过文字传递创建的图形按钮
2006/10/09 PHP
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
Python中的闭包总结
2014/09/18 Python
浅谈Python中函数的参数传递
2016/06/21 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python3 反射的四种基本方法解析
2019/08/26 Python
python反转列表的三种方式解析
2019/11/08 Python
python 读取.nii格式图像实例
2020/07/01 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
2014财务年终工作总结
2014/12/08 职场文书
如何写好活动总结
2019/06/21 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS