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中的五种异常处理机制介绍
Sep 02 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
python使用tornado实现登录和登出
Jul 28 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
基于python检查矩阵计算结果
May 21 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
python链表类中获取元素实例方法
Feb 23 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
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python双向链表原理与实现方法详解
2019/12/03 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
幼儿园教育教学反思
2014/01/31 职场文书
期中考试反思800字
2014/05/01 职场文书
2014和解协议书范文
2014/09/15 职场文书
自主招生自荐信范文
2015/03/04 职场文书