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 06 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
Python复数属性和方法运算操作示例
Jul 21 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
python使用百度文字识别功能方法详解
Jul 23 Python
python支付宝支付示例详解
Aug 22 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
详解python tkinter 图片插入问题
Sep 03 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
如何完美的建立一个python项目
Oct 09 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
做一个有下拉功能的留言版
2006/10/09 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现对象转换为xml的方法示例
2017/06/08 Python
python绘制双柱形图代码实例
2017/12/14 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
2015年中学总务处工作总结
2015/07/22 职场文书
国家助学金受助感言
2015/08/01 职场文书
停车场管理制度范本
2015/08/05 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL