tablib源代碼學習

tablib簡介

-----------
Tablib is a format-agnostic tabular dataset library, written in Python.
Tablib 是一個格式未知的表格操做庫,使用python編寫,目前(2014-06-11)支持以下格式: Excel 、 JSON 、 YAML 、 HTML、 TSV 、 CSV的導入/導出,及修改操做。實現方法是使用各類數據格式的python支持庫(大可能是各類格式的有明支持庫)導入數據成list(列表,python 內置數據結構),每一個list的成員就是數據表的一行(創建一個類Row)。對數據的操做就轉化成對list和Row的操做。導出時,導出時又使用各庫封閉的導出接口就能夠了。

官網: http://docs.python-tablib.org/en/latest/

動機

-----------
學習優秀python庫開源組織方式,學習優秀python代碼編碼規範和技巧。

主要模塊

-----------

1. docs

使用類markdown的簡單文檔格式reStructText,經過Sphinx工做,能夠生成html,pdf,epub,text等格式,python不少庫都是這麼組織其文檔的。

2. setup.py

python庫通用文件,tablib使用相關的操做,實現了python2.5--3.4的兼容工做。

3. tablib/compat.py

tablib庫中處理兼容相關的文件,經過到python版本的測試,提供兼容的調用模塊。

4. tablib/core.py

是tablib庫中的核心文件,提供了重要的類如Row, Dataset, Databook,及初始化函數。

Row是表格中行數據的類,提供了tag(標籤),和row(行數據),都是用list保存,提供了行的操做接口。
全部的行操做都是封裝了list的操做。

Dataset就是一個數據表,保存了多個 Row(行),也能夠加一個headers(表頭),都用list保存。Dateset中提供了數據的操做接口。

Databook就相似一個數據庫,能夠有多張表,也相似excel中能夠有多個datasheet,使用list保存,每項就是一個Dataset。


detect(stream)函數,遍歷支持的格式,使用對應格式封裝的detect()接口測試文件的類型,返回一個元組:(format, stream)。format是格式對應的類,stream是文件流。

import_set(stream),import_book(stream),先使用detect測試數據流相似,再用返回的類型作對應的導入操做。

5. tablib/formats目錄

目錄下定義了支持的文件格式:
每種格式使用一個文件定義其封裝的package庫(下面會介紹),提供了三個tablib/core.py中調用的函數接口,detect,import_set, import_book.

6. tablib/packages

tablib使用的各類格式文件的支持庫:
這些庫都是一些如今的成熟的庫。

總結

---------
tablib使用多種表格格式的支持庫,導出和導入文件,對數據表內容提供統一的操做接口。文件組織很是有條理,方便擴展,文檔充足。




相關文章
相關標籤/搜索