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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
python绘制简单折线图代码示例
Dec 19 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
python抓取网页内容并进行语音播报的方法
Dec 24 Python
python 实现selenium断言和验证的方法
Feb 13 Python
Django基础三之视图函数的使用方法
Jul 18 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
Docker如何部署Python项目的实现详解
Oct 26 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实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
PHP进程同步代码实例
2015/02/12 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
Python中集合类型(set)学习小结
2015/01/28 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
详解Python字典的操作
2019/03/04 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python cumsum函数的具体使用
2019/07/29 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
python数字类型math库原理解析
2020/03/02 Python
python爬取抖音视频的实例分析
2021/01/19 Python
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
中专毕业生自荐信
2013/11/16 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
交通事故协议书范本
2014/11/18 职场文书
人才市场接收函
2015/01/30 职场文书
水电施工员岗位职责
2015/04/11 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server