日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python讀取指定目錄下Excel表所有sheet的數據

系統 2199 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條評論
主站蜘蛛池模板: 孟村| 永新县| 马鞍山市| 类乌齐县| 邹城市| 仪征市| 澄城县| 谢通门县| 彭阳县| 青海省| 宜良县| 枝江市| 诏安县| 塘沽区| 子长县| 衡水市| 达日县| 栖霞市| 乾安县| 礼泉县| 泰顺县| 宜宾市| 阜南县| 平塘县| 三河市| 涿州市| 邵阳县| 山丹县| 大同市| 洛宁县| 德州市| 白玉县| 老河口市| 屏东县| 瑞丽市| 门头沟区| 农安县| 长宁区| 浦江县| 托克托县| 政和县|