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 re正则表达式模块(Regular Expression)
Jul 16 Python
Python调用命令行进度条的方法
May 05 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
利用Python实现图书超期提醒
Aug 02 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python 列表降维的实例讲解
Jun 28 Python
python实现windows壁纸定期更换功能
Jan 21 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
Python 实现RSA加解密文本文件
Dec 30 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
咖啡常见的种类
2021/03/03 新手入门
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
Javascript面向对象编程
2012/03/18 Javascript
Angularjs 基础入门
2014/12/26 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
Python求解平方根的方法
2015/03/11 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
出国留学自荐信
2013/10/25 职场文书
调解协议书
2014/04/16 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
淘宝好评语句大全
2014/12/31 职场文书
纪录片信仰观后感
2015/06/08 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python