python读取指定目录下Excel表所有sheet的数据

系统 779 0

最近想尝试着做一个接口自动化的脚本,首先得需要从文件中读取数据,很早之前更新过一篇,但是局限性较大,一次性只能读取一个Excel的一张sheet表,且读取出的格式也无法满足要求,找了好多方法,终于研究出来啦。

也遇到了很多坑,因为自学python,没有系统的学习过,基础知识也不扎实,且平时工作也没有用到,过段时间就需要从头学起 =_=,所以遇到的坑都是基础知识没掌握到的原因啦。记录一下吧,方便以后复习或知识回顾。

现在是坑:

            
              def getTables():
    for excel in os.listdir(data_path):
        print(excel)
        if excel.startswith('~'):
            break
        excelPath = os.path.join(data_path, excel)
        excels = xlrd.open_workbook(excelPath)
        sheetNames = excels.sheet_names()
        print('sheetNames:',sheetNames)
        return sheetNames #这儿我就直接把获取到的sheet名return了,这是一个list类型

def getData(sheets):
    data = []
    for i in range(2, sheets.nrows):#写这儿的时候,sheets无法自动带出nrows,强行写上去也会报错
        data.append(dict(zip(sheets.row_values(1), sheets.row_values(i))))
    print('读取出的data:',data)

getData(getTables())
            
          

一直提示这个: python读取指定目录下Excel表所有sheet的数据_第1张图片

既然list没有这个方法,len()也可以获取所有的行数啊,所以我就换成了len(),这样:

            
              def getData(sheets):
    data = []
    for i in range(2, len(sheets)):
        data.append(dict(zip(sheets.row_values(1), sheets.row_values(i))))
    print('读取出的data:',data)
            
          

 然而还是不行:

python读取指定目录下Excel表所有sheet的数据_第2张图片

于是再回头看了下之前写的test,恍然大悟:

附上正确的代码

            
              import os,xlrd

data_path = os.path.join('F:\pythonProjrect\itf_simple','data')#os.path.join()函数:连接两个或更多的路径名
print(data_path)

#获取目录下所有Excel中sheet
def getTables():
    for excel in os.listdir(data_path):#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
        print(excel)
        if excel.startswith('~'):
            break
        excelPath = os.path.join(data_path, excel)#拼接路径
        excels = xlrd.open_workbook(excelPath)
        sheetNames = excels.sheet_names()#获取目录下所有sheet的名字,sheetNames为list类型
        print('sheetNames:',sheetNames)
        # 循环从sheetNames中读取sheet表,返回的是sheet的内存地址
        for sheet in sheetNames:
            table = excels.sheet_by_name(sheet)
        print('table:',table)
        return table
#从getTables()中返回的table中提取数据,sheet中的数据组成一个列表,Excel中的表头和数据分别组成key:value的格式
def getData(sheets):
    data = []
    for i in range(2, sheets.nrows):
        data.append(dict(zip(sheets.row_values(1), sheets.row_values(i))))
    print('读取出的data:',data)

getData(getTables())

            
          

这样就运行出来啦~


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论