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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
python开发之thread线程基础实例入门
Nov 11 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python编写Logistic逻辑回归
Dec 30 Python
Python反射用法实例简析
Dec 22 Python
python抖音表白程序源代码
Apr 07 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
python爬虫增加访问量的方法
Aug 22 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
python 字典套字典或列表的示例
Dec 16 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python中的lstrip()方法使用简介
2015/05/19 Python
python学习之编写查询ip程序
2016/02/27 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python+mysql实现教务管理系统
2019/02/20 Python
python实现AES加密和解密
2019/03/27 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
班长自荐书范文
2014/02/11 职场文书
法制演讲稿
2014/09/10 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
单位考核聘任报告
2015/03/02 职场文书
项目备案申请报告
2015/05/15 职场文书
创业计划书之干洗店
2019/09/10 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python