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实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
约瑟夫问题的Python和C++求解方法
Aug 20 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
numpy.where() 用法详解
May 27 Python
Python基础学习之函数方法实例详解
Jun 18 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Python实现微信小程序支付功能
Jul 25 Python
QML使用Python的函数过程解析
Sep 26 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
python操作链表的示例代码
Sep 27 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
python实现简单倒计时功能
Apr 21 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
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
python用700行代码实现http客户端
2021/01/14 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
临床医学系毕业生推荐信
2013/11/09 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
班训口号大全
2014/06/18 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
焦裕禄观后感
2015/06/03 职场文书
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python
python中mongodb包操作数据库
2022/04/19 Python