tablib模塊


####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,也就是兩個文件吧

更新到這里

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM