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 26 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
python 获取图片分辨率的方法
Jan 08 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
python简单区块链模拟详解
Jul 03 Python
解析python的局部变量和全局变量
Aug 15 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
opencv实现图像平移效果
Mar 24 Python
如何基于python实现单目三维重建详解
Jun 25 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
模仿OSO的论坛(三)
2006/10/09 PHP
PHP编程函数安全篇
2013/01/08 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
Python新手实现2048小游戏
2015/03/31 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Django的Modelforms用法简介
2019/07/27 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
大学新生欢迎词
2014/01/10 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
2014财务年度工作总结
2014/11/11 职场文书
初三语文教学反思
2016/03/03 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL