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 参数列表中的self 显式不等于冗余
Dec 01 Python
python刷投票的脚本实现代码
Nov 08 Python
Python Matplotlib库入门指南
May 18 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
解决python文件双击运行秒退的问题
Jun 24 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
python模块如何查看
Jun 16 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/04 星际争霸
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
python中的列表推导浅析
2014/04/26 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
Python实现简单字典树的方法
2016/04/29 Python
python cs架构实现简单文件传输
2020/03/20 Python
python获取服务器响应cookie的实例
2018/12/28 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python实现动态创建类的方法分析
2019/06/25 Python
基于Python函数和变量名解析
2019/07/19 Python
django 消息框架 message使用详解
2019/07/22 Python
详解python中docx库的安装过程
2019/11/08 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python实现计算图形面积
2021/02/22 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
黄金酒广告词
2014/03/21 职场文书
2015年防汛工作总结
2015/05/15 职场文书
获奖感言范文
2015/07/31 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang