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中装饰器的一个妙用
Feb 08 Python
python实现将汉字转换成汉语拼音的库
May 05 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
python实现自动发送邮件
Jun 20 Python
python中count函数简单的实例讲解
Feb 06 Python
jupyter notebook 增加kernel教程
Apr 10 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
python一些性能分析的技巧
Aug 30 Python
python开发入门——set的使用
Sep 03 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
Python基于Serializer实现字段验证及序列化
Nov 04 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
PHP递归删除目录几个代码实例
2014/04/21 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
python实现数据库跨服务器迁移
2018/04/12 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
怎样写留学自荐信
2013/11/11 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
病媒生物防治方案
2014/05/13 职场文书
超越自我演讲稿
2014/05/21 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
企业计划生育责任书
2015/05/09 职场文书
仙境之桥观后感
2015/06/16 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python