####tablib基礎知識#### tablib是什么我就不說了,網上一大推,我大概就知道能將數據轉為某種格式 1、安裝tablib模塊 pip install tablib 2、安裝完畢,就在你要使用的py文件中導入就好 import tablib 3、下面講講它的一些基礎用法 Dataset對象 創建dataset1,方式一: dataset1 = tablib.Dataset() dataset1.headers = ['id','name','age','sex'] dataset1.append(['1','朱宇','21','male']) dataset1.append(['2','張昊','22','male']) dataset1.append(['1','伍洋','20','male']) 創建dataset2,方式二: header2 = ['id','name','password'] data = [ ['1','楊鵬','123'], ['2','代松柏','567'], ] dataset2 = tablib.Dataset(headers=header2,*data) ## 這是創建dataset的兩種方式,兩者都是創建一個頭部,再添加一行一行數據 ## 我把它理解成mysql數據庫,大致都一樣,這樣比較好記憶點。 ## 方法一,先是實例化出一個空對象,再給headers屬性賦值,添加數據 ## 方式二,在實例化對象的時候,就把數據傳了進去 這里你可以打印看看這個創建出來的對象,它在終端是怎樣現實的 dataset對象創建出來的,下面說說增刪查改 # 增加一行數據(拿dataset2舉例子) dataset2.append(['3','朱宇','123']) dataset2.append(['4','何鵬','123']) 注意:調用append方法就可以了,傳一個列表,數據必須要和headers想對應,不能多,不能少 # 增加一列數據,增加年齡這列數據(實在原有的基礎上額) dataset2.append_col((20,21,22,23),'age') 注意:我在添加列之前,dataset2已經有了數據,那么我在添加age這列,必須要為之前每行數據, 也要添加對應的age的值,所以我在第一個參數傳了一個元組(列表也可以),之前數據有多少 行,你也必須對應傳多少個,第二個參數就是你添加列的名字 思考?? 假如我在添加列之前,已經有了幾百條,上千條數據了,那你第一個參數是不是也要寫這么多啊 解答:我在上面那表的基礎再添加一個列(score),記錄成績 import random def get_score(row): return random.randint(60,100) dataset2.append_col(get_score,headers='score') 這樣我就無需考慮之前有多少數據了,它會將函數的返回值當作每行添加列score的值 雖說這樣可以解決問題,但是添加數據的精確性不高,所以在設計headers之前,要考慮清楚 # 查看某一行的數據 dataset2[index] 這里的index必須是合法,也就是說必須存在於dataset2中 # 獲取某一列的數據 dataset2['score'] # 這里我獲取到了score這一列的所有數據,你拿到該數據也可以進行自己的處理 dataset2.get_col(index) # 這是通過索引去獲取,和上面獲取某一行是一樣的,不同的事,它是用方法 # 還是注意下,上面的score,和index也是必須要有的 # 刪除某行,某列 del 某行(某列) 關於刪除里面還有其他方法,pop,lpop這些 我們在對Dateset對象進行了一些列的操作,最終還是要保存在硬盤中(也就是文件) 這也是tablib的強大之處,你可以將Dateset對象轉換為你想要的格式,保存下來 還是用dataset2舉例子 dataset2.json # 轉成json格式 dataset2.xls # 轉成xls格式 dataset2.csv # 轉成csv格式 還有其他格式,可以去查詢看看,上面這些操作只是轉成了某種格式,最后還是要保存下來 with open('zhuyu.csv','wb') as f: f.write(dataset2.scv) 這只是一些基礎用法,想要更加深入了解的話,可以去官網查找看看 還有一個差點忘記,Databook,它是ablib下面的一個類 和上面差不多,首先實例化,傳參數 book = tablib.Databook(dataset1,dataset2) with open ('c.csv','wb') as f: f.write(book.scv) 打開book.scv你會發現下面會有兩個sheet,也就是兩個文件吧 更新到這里