前言

当登录的账号有多个的时候,我们一般用excel存放测试数据,本节课介绍,python读取excel方法,并保存为字典格式。

一、环境准备

1.先安装xlrd模块,打开cmd,输入pip install xlrd在线安装

>>pip install xlrd

二、基本操作

1.exlce基本操作方法如下

# 打开exlce表格,参数是文件路径
data = xlrd.open_workbook('test.xlsx')

# table = data.sheets()[0]           #  通过索引顺序获取
# table = data.sheet_by_index(0)     #  通过索引顺序获取
table = data.sheet_by_name(u'Sheet1')  # 通过名称获取

nrows = table.nrows  # 获取总行数
ncols = table.ncols  # 获取总列数

# 获取一行或一列的值,参数是第几行
print table.row_values(0)  # 获取第一行值
print table.col_values(0)  # 获取第一列值

三、excel存放数据

1.在excel中存放数据,第一行为标题,也就是对应字典里面的key值,如:username,password

2.如果excel数据中有纯数字的一定要右键》设置单元格格式》文本格式,要不然读取的数据是浮点数

(先设置单元格格式后编辑,编辑成功左上角有个小三角图标)

四、封装读取方法

1.最终读取的数据是多个字典的list类型数据,第一行数据就是字典里的key值,从第二行开始一一对应value值

2.封装好后的代码如下

# coding:utf-8
import xlrd
class ExcelUtil():
    def __init__(self, excelPath, sheetName):
        self.data = xlrd.open_workbook(excelPath)
        self.table = self.data.sheet_by_name(sheetName)
        # 获取第一行作为key值
        self.keys = self.table.row_values(0)
        # 获取总行数
        self.rowNum = self.table.nrows
        # 获取总列数
        self.colNum = self.table.ncols

def dict_data(self):
        if self.rowNum <= 1:
            print("总行数小于1")
        else:
            r = []
            j=1
            for i in range(self.rowNum-1):
                s = {}
                # 从第二行取对应values值
                values = self.table.row_values(j)
                for x in range(self.colNum):
                    s[self.keys[x]] = values[x]
                r.append(s)
                j+=1
            return r

if __name__ == "__main__":
    filepath = "D:\\test\\web-project\\5ke\\testdata.xlsx"
    sheetName = "Sheet1"
    data = ExcelUtil(filepath, sheetName)
    print data.dict_data()

运行结果:

[{u'username': u'python\u7fa4', u'password': u'226296743'},

{u'username': u'selenium\u7fa4', u'password': u'232607095'},

{u'username': u'appium\u7fa4', u'password': u'512200893'}]

最新文章

  1. Unity3D 原生Android结合UnityPlayerActivity开发遇到的问题
  2. Java中的反射机制
  3. jQuery常用方法验证
  4. Extjs Window用法详解
  5. ubuntu 14.04安装
  6. 382. Linked List Random Node
  7. flask中的request对象方法
  8. Rsync文件同步
  9. posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序
  10. POJ 1185 炮兵
  11. JavaScript中的Array对象
  12. 关于VCL的编写 (一) 如何编写自己的VCL控件
  13. C++ 构造函数和析构函数的调用顺序、虚析构函数的作用
  14. Banner图二三事
  15. 【一天一道LeetCode】#24. Swap Nodes in Pairs
  16. android wake lock 电源管理简单学习
  17. thinkphp5简单使用redis缓存
  18. Python_collections_deque双向队列
  19. python语法_字符串拼接
  20. unity中尽量规避的C#写法

热门文章

  1. [boost-3] 函数对象
  2. [转]如何清空Chrome缓存和Cookie
  3. java面笔准备
  4. lincode-58-四数之和
  5. Chromium学习笔记
  6. HTML精确定位之位置参数乱炖一锅
  7. BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子
  8. redux-saga基本用法
  9. ubuntu使用su切换root用户提示“认证失败”
  10. Codeforces Round #525 (Div. 2) F. Ehab and a weird weight formula